我有三台机器A,B和C都是相互连接的。如果A和B尝试同时向C发送数据,Can C是否使用两个不同的线程来接收相应的数据而不使用任何锁?这里C通过不同的插座连接到A和B.提前致谢。
答案 0 :(得分:1)
嗯,是的 - 无论如何都没有明确的锁定。 IP堆栈将有自己的内部锁,但我不认为这就是你所要求的。
您已经意识到多个进程可以与不同的服务器同时通信,而多个进程意味着不同的线程。因此,IP堆栈是线程安全的。
鉴于通常对一个多线程进程内的任何共享数据的一般关注(如rockstar评论所述),那些与不同对等体/主机上的IP端点通信的线程没有问题。这很常见,效果很好。
C上的两个线程可以安全地与A和B进行通信。
来吧 - 试试吧!
答案 1 :(得分:0)
[将我的评论作为答案发布,因为它没有错并且有意义:P甚至引用。]
我会说你可以拥有2个主题。一个线程侦听来自套接字1的数据,另一个线程侦听来自套接字2的数据。
但是,如果您需要锁定,则应取决于您对数据的处理方式。你把它写到缓冲区吗?由于主题分享Data
,Code
& Heap
段因此在编写此接收数据时必须小心,在这种情况下您需要锁定。
这是我的基本理解。我将在这里等待更多知识渊博的答案。