发送从多个线程相同的UDP套接字
答
是的,我认为你可以。
由于数据包是单独发送的,尽管它们接收的顺序是非确定性的,但它已经在使用UDP。
因此,在同一套接字中的多个线程发送罚款。尽管如果你使用套接字(比如bind(),close())来做其他事情,那么你最终会遇到竞争条件,所以你可能要小心。
答
系统调用应该是原子的,所以对于UDP来说看起来很正常。然后内核也有错误,你正在邀请各种令人讨厌的惊喜。为什么你不能每个线程使用套接字?它不像TCP那样需要连接。作为额外的奖励,你会为每个描述符获得一个单独的发送缓冲区。
我不确定原子部分。例如,在Linux上,如果启用了抢占,则系统调用不是原子的 – Emiliano 2011-06-23 08:55:33