「システムコールをブロックする」とはどういう意味ですか?
私のオペレーティング システム コースでは、マルチスレッド プログラミングを勉強しています。教科書で「スレッドがブロッキング システム コールを実行したときに、別のスレッドを実行できる」と読んだときの意味がよくわかりません。
「システムコールをブロックする」とはどういう意味ですか?
私のオペレーティング システム コースでは、マルチスレッド プログラミングを勉強しています。教科書で「スレッドがブロッキング システム コールを実行したときに、別のスレッドを実行できる」と読んだときの意味がよくわかりません。
ブロッキング システム コールは、アクションが完了するまで待機する必要があるシステム コールです。read()
良い例です-入力の準備ができていない場合、そこに座って、いくつかが準備されるまで待ちます(もちろん、非ブロックに設定していない場合、ブロックシステムコールにはなりません) )。明らかに、1 つのスレッドがブロッキング システム コールを待機している間、別のスレッドが別の処理を行っている可能性があります。
この非常に短いテキストを読むことをお勧めします : http://files.mkgnu.net/files/upstare/UPSTARE_RELEASE_0-12-8/manual/html-multi/x755.html呼び出しは、並行プロセスだけでなく、スレッドでも問題になる可能性があります。
これは、システム コールで 1 つのスレッドがブロックされると、別のスレッドのコードの更新が無期限に遅延する可能性があるため、マルチスレッド アプリケーションでは特に問題になります。
それが役に立てば幸い。