Linux 在多个线程中从同一UDP套接字发送

Linux 在多个线程中从同一UDP套接字发送,linux,sockets,udp,Linux,Sockets,Udp,我有多个线程需要将UDP数据包发送到不同的IP地址(只发送,不需要接收)。我可以在所有线程中重复使用相同的UDP套接字吗?系统调用应该是原子的,因此从形式上讲,UDP似乎没有问题。果仁也有虫子,你正在邀请各种各样的令人讨厌的惊喜。为什么每个线程不能使用套接字?它不像TCP那样需要连接。作为额外的奖励,您可以为每个描述符获得一个单独的发送缓冲区。是的,我想您可以 由于数据包是单独发送的,尽管它们的接收顺序是不确定的,但UDP已经存在 因此,在同一个套接字中发送多个线程是可以的 尽管如此,如果您正在

我有多个线程需要将UDP数据包发送到不同的IP地址(只发送,不需要接收)。我可以在所有线程中重复使用相同的UDP套接字吗?

系统调用应该是原子的,因此从形式上讲,UDP似乎没有问题。果仁也有虫子,你正在邀请各种各样的令人讨厌的惊喜。为什么每个线程不能使用套接字?它不像TCP那样需要连接。作为额外的奖励,您可以为每个描述符获得一个单独的发送缓冲区。

是的,我想您可以

由于数据包是单独发送的,尽管它们的接收顺序是不确定的,但UDP已经存在

因此,在同一个套接字中发送多个线程是可以的


尽管如此,如果您正在使用套接字执行其他操作,例如bind()、close(),那么最终可能会遇到竞争条件,因此您可能需要小心。

我不确定原子部分。例如,在Linux上,如果启用了抢占,则系统调用不是原子的