Jay*_*Jay 119 c sockets networking
我知道一个好的设计应该避免这种情况,但我不清楚这些系统API将如何表现.我也找不到相同的好文档.
方向上的任何指针都会有所帮助.
Chr*_*odd 86
POSIX将send/recv定义为原子操作,所以假设您正在谈论POSIX send/recv然后是,您可以从多个线程同时调用它们,事情就可以了.
这并不一定意味着它们将并行执行 - 在多次发送的情况下,第二次可能会阻塞直到第一次完成.您可能不会注意到这一点,因为一旦将数据放入套接字缓冲区,发送就会完成.
如果您正在使用SOCK_STREAM套接字,那么尝试并行操作不太可能有用,因为send/recv可能只发送或接收部分消息,这意味着事情可能会被拆分.
阻止SOCK_STREAM套接字上的send/recv只会阻塞,直到它们发送或recv至少1个字节为止,因此阻塞和非阻塞之间的区别无用.
Adr*_*her 17
套接字描述符属于进程,而不属于特定线程.因此,可以在不同的线程中向/从相同的套接字发送/接收,OS将处理同步.
但是,如果发送/接收的顺序在语义上很重要,那么您自己(分别是您的代码)必须确保在不同线程中的操作之间进行正确的排序 - 就像线程一样.
| 归档时间: |
|
| 查看次数: |
53204 次 |
| 最近记录: |