AF_UNIX套接字是否发送线程安全?

gre*_*orn 4 c c++ sockets linux multithreading

环顾四周,但找不到任何证明AF_UNIX套接字答案的链接.

我的实现是在linux系统上,我有一个AF_UNIX SOCK_STREAM套接字,

  • 这个插槽上有一个接收器线程
  • 很少的工作线程可以在这个套接字上调用'send()'.

我的问题是 - AF_UNIX套接字'send()'线程安全吗?如果我在AF_UNIX套接字fd上并行/并发地调用send,那么内核会处理同步吗?

我经历了多个链接,但都与TCP/UDP(AF_INET)套接字有关,所以如果有人可以建议一个证明答案合理的链接,或者可以提供对内核代码的一些了解,那将会有很大的帮助.

Joh*_*ger 6

POSIX指定它定义的所有函数必须是线程安全的,除了特定异常列表上的那些函数.该send(2)函数由POSIX定义,不包含在异常列表中.由于Linux实现send(2)声称符合POSIX规范,因此您可以依赖它实现线程安全.

  • 据我所知,"Linux"不是"符合POSIX标准的系统". (2认同)