在Linux中,如果我为同一个非阻塞套接字创建两个线程,一个用于TCP发送数据,一个用于TCP接收数据,那么它是线程安全的吗?
或者我应该使用互斥体进行同步?
绝对没问题。
read/write/send/recv
等库函数中已经存在互斥锁或等效同步。
这些使用套接字的函数均来自 POSIX.1-2008 标准。
如果您检查
man 7 pthreads
,它会说
POSIX.1-2001 和 POSIX.1-2008 要求标准中指定的所有函数都应是线程安全的,除了...
(...下面列出了您可以确认您不关心的功能列表)。