当主机尝试从不同套接字接收数据时是否需要锁定

时间:2013-07-17 03:02:25

标签: multithreading sockets boost locking

我有三台机器A,B和C都是相互连接的。如果A和B尝试同时向C发送数据,Can C是否使用两个不同的线程来接收相应的数据而不使用任何锁?这里C通过不同的插座连接到A和B.提前致谢。

2 个答案:

答案 0 :(得分:1)

嗯,是的 - 无论如何都没有明确的锁定。 IP堆栈将有自己的内部锁,但我不认为这就是你所要求的。

您已经意识到多个进程可以与不同的服务器同时通信,而多个进程意味着不同的线程。因此,IP堆栈是线程安全的。

鉴于通常对一个多线程进程内的任何共享数据的一般关注(如rockstar评论所述),那些与不同对等体/主机上的IP端点通信的线程没有问题。这很常见,效果很好。

C上的两个线程可以安全地与A和B进行通信。

来吧 - 试试吧!

答案 1 :(得分:0)

[将我的评论作为答案发布,因为它没有错并且有意义:P甚至引用。]

我会说你可以拥有2个主题。一个线程侦听来自套接字1的数据,另一个线程侦听来自套接字2的数据。

但是,如果您需要锁定,则应取决于您对数据的处理方式。你把它写到缓冲区吗?由于主题分享DataCode& Heap段因此在编写此接收数据时必须小心,在这种情况下您需要锁定。

这是我的基本理解。我将在这里等待更多知识渊博的答案。