【发布时间】:2021-03-25 05:44:01
【问题描述】:
根据 boost 文档 - https://www.boost.org/doc/libs/1_75_0/doc/html/boost_asio/reference/ip__udp/socket.html,ip::udp::socket 对于共享对象不是线程安全的。
但是,如果我们查看用于套接字编程的底层 UNIX API,则 SOCK_DGRAM 套接字上的 recv() 是线程安全的。我们知道这一点是因为此处记录了不安全操作的列表 - https://pubs.opengroup.org/onlinepubs/9699919799/functions/V2_chap02.html#tag_15_09 并且 recv() 不存在。
【问题讨论】:
-
ip::udp::socket在特定平台上可能使用的一些 API 是线程安全的这一事实并不意味着该类作为一个整体是线程安全的。
标签: sockets boost udp datagram