从多个线程中的相同UDP套接字发送

时间:2010-08-11 16:34:37

标签: linux sockets udp

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

2 个答案:

答案 0 :(得分:3)

是的,我想你可以。

由于数据包是单独发送的,虽然接收的顺序是不确定的,但它已经是UDP。

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

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

答案 1 :(得分:2)

系统调用应该是原子的,所以对于UDP来说似乎很正常。然后内核也有bug,你正在邀请各种令人讨厌的惊喜。为什么不能为每个线程使用套接字?它与TCP不同,您需要连接。作为额外的奖励,您将为每个描述符获得单独的发送缓冲区。