8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

在同一个套接字上并行调用 send/recv 是否有效?

abuzain 2月前

96 0

我们可以在同一个套接字上从一个线程调用发送并从另一个线程调用接收吗?我们可以在同一个套接字上从不同的线程并行调用多个发送吗?我知道一个好的设计应该避免这种情况......

  1. 我们可以在同一套接字上从一个线程调用 send 并从另一个线程调用 recv 吗?
  2. 我们可以从同一个套接字上的不同线程并行调用多个发送吗?

我知道一个好的设计应该避免这种情况,但我不清楚这些系统 API 将如何表现。我找不到关于此问题的良好文档。

任何方向的指示都会有帮助。

帖子版权声明 1、本帖标题:在同一个套接字上并行调用 send/recv 是否有效?
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由abuzain在本站《sockets》版块原创发布, 转载请注明出处!
最新回复 (0)
  • POSIX 将 send/recv 定义为原子操作,因此假设您正在谈论 POSIX send/recv,那么是的,您可以从多个线程同时调用它们,并且一切正常。

    这并不一定意味着它们将并行执行——在多次发送的情况下,第二个可能会阻塞,直到第一个完成。您可能不会注意到这一点,因为一旦将数据放入套接字缓冲区,发送就会完成。

    如果您使用 SOCK_STREAM 套接字,尝试并行执行操作不太可能有用,因为 send/recv 可能只发送或接收消息的一部分,这意味着事情可能会被分裂。

    SOCK_STREAM 套接字上的阻塞发送/接收只会阻塞到它们发送或接收至少 1 个字节,因此阻塞和非阻塞之间的差异没有用。

返回
作者最近主题: