我有多个线程需要将UDP数据包发送到不同的IP地址(仅发送,不需要接收任何内容)。我可以在所有线程中重用相同的UDP套接字吗?
答案 0 :(得分:3)
是的,我想你可以。
由于数据包是单独发送的,虽然接收的顺序是不确定的,但它已经是UDP。
因此,在同一个套接字中发送多个线程是可以的。
虽然,如果您正在使用套接字执行其他操作,例如bind(),close(),那么您最终可能会遇到竞争条件,因此您可能需要小心。
答案 1 :(得分:2)
系统调用应该是原子的,所以对于UDP来说似乎很正常。然后内核也有bug,你正在邀请各种令人讨厌的惊喜。为什么不能为每个线程使用套接字?它与TCP不同,您需要连接。作为额外的奖励,您将为每个描述符获得单独的发送缓冲区。