在两个线程中使用一个套接字

时间:2011-09-14 14:33:28

标签: c++ c sockets

2 个答案:

答案 0 :(得分:17)

跨线程共享套接字应该没有问题。如果在阅读和写作之间需要任何协调,并且可能会有,那么你将需要以某种方式同步它。

这篇文章File Descriptors And Multithreaded Programs可能会有所帮助,并会在下面发表评论。

  

...用于此的套接字库应该是线程安全的,以便从一个线程中的套接字读取并支持对另一个线程中的套接字的读取...原始系统调用read()和write( )支持这个

来自socket manpage

  

SOCK_STREAM类型的套接字是全双工字节流

您应该能够读取和写入两个方向没有问题,一旦建立连接,方向几乎无关,至少在TCP中。

答案 1 :(得分:4)

是的,这应该没问题。通常有一个线程等待读取套接字和其他独立发送的线程。您可能需要特别注意的是,两个线程不是同时