首页 文章

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

提问于
浏览
0

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

2 回答

  • 1

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

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

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

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

    来吧 - 试试吧!

  • 0

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

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

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

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

相关问题