3


1

複数のスレッドで同じUDPソケットから送信する

UDPパケットを異なるIPアドレスに送信する必要がある複数のスレッドがあります(送信するだけで、受信する必要はありません)。 すべてのスレッドで同じUDPソケットを再利用できますか?

2 Answer


3


はい、できると思います。

パケットは個別に送信されるため、受信される順序は非決定的ですが、すでにUDPを使用しています。

したがって、同じソケットで複数のスレッドを送信するのは問題ありません。

ただし、bind()、close()など、ソケットを使用して他の処理を行う場合は、競合状態になる可能性があるため、注意が必要です。


2


システムコールはアトミックであると想定されているため、UDPでは正式に問題ないようです。 次に、カーネルにもバグがあり、あらゆる種類の厄介な驚きを招いています。 スレッドごとにソケットを使用できないのはなぜですか? 接続が必要なTCPとは異なります。 追加のボーナスとして、記述子ごとに個別の送信バッファーを取得します。