私は最近、Unixに関する「研究ノート」を作成し、マルチスレッドプロセスについて次のような主張をしました。
「緊急」ビットを含むTCPパケットを受信すると、カーネルがSIGURGを受信する必要があるスレッドを識別することはほとんど不可能です。
段落3からセクション1.1、これを確認したい。
標準はこれに関する規定を提供しておらず、TCPURG
フラグ全体MSG_OOB
とSIGURG
実装とプロトコル固有のコンテンツを予約します。
しかし、既存の慣行はどうですか?オペレーティングシステムカーネルがSIGURG
TCPフラグを受け取るソケット呼び出しでブロックされたスレッドにメッセージを送信しますか?スレッドをソケット所有者として指定できる実装はありますか?別の行動がありますか?recv(2)
URG
答え1
私が調査した3つの実装であるDarwin、FreeBSD、およびLinuxでは、メインスレッドはシグナルを受け取ります。メインスレッドがマスクでそれをブロックすると、どのスレッドも信号を受信しません。