And*_*dna 3 sockets linux multithreading
我必须编写使用Unix数据报套接字的简单客户端 - 服务器应用程序.客户端可以根据服务器的请求向服务器发送信息,或者他可以根据自己的请求从服务器接收信息.
我有一个想法,一个线程将等待用户输入,确定我们要发送到服务器的请求,另一个线程将只等待来自服务器的套接字上的消息,如果它是我们请求它的消息将将它写入标准输出,如果是服务器请求线程将写入服务器请求的内容.我会使用互斥锁,因此两个线程不会同时写入同一个套接字.
我的问题是,如果一个线程将从某个套接字读取并且同时其他线程将使用相同的套接字发送数据,套接字将如何表现,是否安全?或者我也应该在这种情况下使用互斥?
Fin*_*fin 10
内核结构通常以线程安全的方式构建; 和套接字也不例外.如果您应该担心任何事情,那么使用套接字和线程的安全性不是程序的逻辑.
另外,我想提一下流套接字是全双工的,这意味着读/写保证可以安全地同时发生,这怎么可能发生呢?内核为您锁定或确保您可以同时发送和接收.
对于全双工参数:
http://www.kernel.org/doc/man-pages/online/pages/man2/socket.2.html
对于内核结构是线程安全的:
我找不到你的链接支持这一点,但我99%肯定.
PS如果有疑问,测试该东西可能有助于
编辑:
请,如果我所说的错误,请在投票前对其进行评论.
EDIT.2:
在这里你可以发现POSIX标准指定它的所有函数都必须是线程安全的,除了2.9.1节中定义的列表
http://pubs.opengroup.org/onlinepubs/9699919799/functions/V2_chap02 html的