我有一个使用posix管道实现多线程通信的C++应用程序(这样我就不必因死锁而疯狂了),
我将写操作设置为非阻塞,这样如果缓冲区没有足够的空间来写入数据,写程序将会得到一个错误。
if((pipe(pipe_des)) == -1)
throw PipeException();
int flags = fcntl(pipe_des[1], F_GETFL, 0); // set write operation non-blocking
assert(flags != -1);
fcntl(pipe_des[1], F_SETFL, flags | O_NONBLOCK);
现在我希望将管道缓冲区大小设置为自定义值(在特定情况下是一个单词)。
我已经搜索过了,但是没有找到任何有用的信息。是否有一种方法(可能符合posix),可以实现这一点?
谢谢
Lorenzo
PS:我在Linux下(如果有用的话)
setsockopt(fd, SOL_SOCKET, SO_SNDBUF, size)
是你想要设置缓冲区大小的调用。 - peterh