28

「システムコールをブロックする」とはどういう意味ですか?

私のオペレーティング システム コースでは、マルチスレッド プログラミングを勉強しています。教科書で「スレッドがブロッキング システム コールを実行したときに、別のスレッドを実行できる」と読んだときの意味がよくわかりません。

4

3 に答える 3

29

ブロッキング システム コールは、アクションが完了するまで待機する必要があるシステム コールです。read()良い例です-入力の準備ができていない場合、そこに座って、いくつかが準備されるまで待ちます(もちろん、非ブロックに設定していない場合、ブロックシステムコールにはなりません) )。明らかに、1 つのスレッドがブロッキング システム コールを待機している間、別のスレッドが別の処理を行っている可能性があります。

于 2013-10-11T02:11:31.483 に答える
3

この非常に短いテキストを読むことをお勧めします : http://files.mkgnu.net/files/upstare/UPSTARE_RELEASE_0-12-8/manual/html-multi/x755.html呼び出しは、並行プロセスだけでなく、スレッドでも問題になる可能性があります。

これは、システム コールで 1 つのスレッドがブロックされると、別のスレッドのコードの更新が無期限に遅延する可能性があるため、マルチスレッド アプリケーションでは特に問題になります。

それが役に立てば幸い。

于 2015-11-29T18:02:04.920 に答える