シングルスレッドのサーバー プロセスが CPU を集中的に使用する操作を実行する分散システムを設計しています。これらの操作は、ZeroMQ ネットワーク メッセージによってトリガーされます。
シングルスレッド プロセスが CPU を集中的に使用する作業を実行している場合、I/O (ZeroMQ ソケット) はブロックされますか?
ありがとう!
シングルスレッドのサーバー プロセスが CPU を集中的に使用する操作を実行する分散システムを設計しています。これらの操作は、ZeroMQ ネットワーク メッセージによってトリガーされます。
シングルスレッド プロセスが CPU を集中的に使用する作業を実行している場合、I/O (ZeroMQ ソケット) はブロックされますか?
ありがとう!
読むメッセージがない場合は、メッセージの読み取りをブロックします。
未処理のメッセージの数が ZMQ_HWM を超えた場合、送信をブロックします (デフォルトでは制限はありませんが、メモリの量には実際的な制限があります)。メッセージが単にドロップされる場合は、ソケットの種類に依存するようです (その場合はブロックされません) その制限に達したとき。
いずれの場合もブロックしたくない場合は、フラグ ZMQ_NOBLOCK を指定できます。これらの場合、ブロックする代わりに zmq_send/zmq_recv が失敗します。