0

我有三台机器 A、B 和 C,它们都相互连接。如果 A 和 B 尝试同时向 C 发送数据,C 可以使用两个不同的线程来接收各自的数据而不使用任何锁吗?这里 C 通过不同的套接字连接到 A 和 B。提前致谢。

4

2 回答 2

1

好吧,是的 - 无论如何都没有显式锁定。IP 堆栈将有自己的内部锁,但我认为这不是您要问的。

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

考虑到通常对一个多线程进程中的任何共享数据的一般注意(如 rockstar 评论所述),这些线程与不同对等/主机上的 IP 端点通信没有问题。这很常见并且工作正常。

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

来吧 - 试试吧!

于 2013-07-17T05:58:57.340 回答
0

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

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

但是是否需要锁取决于您对数据的处理方式。你把它写到某个缓冲区吗?由于线程共享Data和分段CodeHeap因此在写入接收到的数据时必须小心,在这种情况下需要锁定。

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

于 2013-07-17T06:26:52.027 回答