SOCK_DGRAM 套接字接收线程安全?
SOCK_DGRAM socket recv thread-safe?
对于 recv() 方法,UNIX SOCK_DGRAM 套接字是线程安全的吗?
如果多个线程在套接字上调用 recv(),是否保证每个线程都获得一个干净的 UDP 数据包,或者是否有可能混淆数据?
该行为是否会受到套接字是处于阻塞模式还是非阻塞模式的影响?非常感谢任何指向文档的指针。
从多个线程调用 recv()
是安全的操作。如果套接字是数据报套接字,则每个 recv returns 一个不与其他数据报混合的唯一数据报。
Posix标准显式枚举所有不安全的标准函数:
2.9.1 Thread-Safety
All functions defined by this volume of POSIX.1-2017 shall be
thread-safe, except that the following functions1 need not be
thread-safe.
asctime() basename() catgets() crypt() ctime()
....
有将近 100 个不安全的函数和仅在特定条件下安全的其他函数。 recv()
不存在。参见 POSIX.1-2017 2.9.1 Thread-Safety。
对于 recv() 方法,UNIX SOCK_DGRAM 套接字是线程安全的吗?
如果多个线程在套接字上调用 recv(),是否保证每个线程都获得一个干净的 UDP 数据包,或者是否有可能混淆数据?
该行为是否会受到套接字是处于阻塞模式还是非阻塞模式的影响?非常感谢任何指向文档的指针。
从多个线程调用 recv()
是安全的操作。如果套接字是数据报套接字,则每个 recv returns 一个不与其他数据报混合的唯一数据报。
Posix标准显式枚举所有不安全的标准函数:
2.9.1 Thread-Safety
All functions defined by this volume of POSIX.1-2017 shall be thread-safe, except that the following functions1 need not be thread-safe.
asctime() basename() catgets() crypt() ctime() ....
有将近 100 个不安全的函数和仅在特定条件下安全的其他函数。 recv()
不存在。参见 POSIX.1-2017 2.9.1 Thread-Safety。