1

sctp ソケットからの同時読み取りはスレッドセーフです。SCTP スタックは、おそらく何らかの同期プリミティブ (mutex など) を使用してそれを実現しています。私の質問は、(sctp) ソケットが非ブロック モードに設定されているかどうかです。sctp コードがすぐにロックを取得できなかった場合、またはソケットのバッファーがいっぱいになったときにのみブロックされた場合、読み取りは戻りますか?

4

1 に答える 1

1

ソケットが非ブロッキング モードの場合は、mutex が取得されるまでブロックし、現在のバッファの状態で指示されていることrecvmsg()を実行してから戻ります。そのどれもブロックしないので、ミューテックスが一瞬ブロックしても問題ありません。TCP や UDP の場合と同じ状況です。ノンブロッキング コントラクトは、データの待機をブロックしないことです。

于 2013-03-23T03:50:34.350 に答える