IOとノンブロッキングIOのブロックについて簡単な説明をしてください。私はこれらの概念が私たちの多くのプログラマの間ではあまり明確でないことを発見しました。単純な言葉で、IOとノンブロッキングIOをブロックするのは何ですか?
9
A
答えて
9
I/Oのブロックは、I/Oが実行されている間にプログラムの実行が保留されることを意味します。したがって、プログラムはI/Oが終了するまで待ってから、実行を継続します。 ノンブロッキングI/Oでは、I/O操作中にプログラムを続行できます。
0
は、単に非ブロッキングI/O(非同期)は、そのことをしながら他の操作を行うことを可能にし、I/Oの他の操作に
4
をブロックするブロックすることは、同時実行の問題だ...と述べました。通常の場合、OSカーネルがユーザープログラムからI/O操作を受け取った後、I/O操作が完了するまでそのプログラムは再び実行されません。その他のプログラムは通常、その間にスケジュールされます。
これはほとんど問題を解決しません。たとえば、read(2)
が返ってきたときにI/Oが完了しないかぎり、読み込まれたバイト数をプログラムがどのように知っていますか? write(2)
が返ってきたときに操作が進行中であれば、write(2)
バッファを再利用できるかどうかをどのように知っていますか?明らかに、非同期I/Oに対しては、より複雑なインターフェースが必要です。
最終的にそれがダウンしています:I/Oは、I/Oは、単にシステムコールで予定されているI/Oが
- 実際の結果を伝えるための通知メカニズムがあります。
- すぐには完了できない場合、I/O操作が失敗するという妥協案があります。これは実際には "非ブロッキング" I/Oのより一般的な使用です。
全体の問題は、I/Oが考えられる唯一のスレッドをブロックできたときに、マルチスレッド・プログラムをスケジュールするための努力によってさらに複雑になるが、それは別の問題だ...
関連する問題
- 1. NodeJSとノンブロッキングIOの理解
- 2. org.apache.commons:commons-ioとcommons-io:commons-ioの違いは何ですか?
- 3. C++の単純なIO母音カウントプログラム
- 4. ノンブロッキングio webserver/java for framework
- 5. ioの実用は何ですか? Clojureのブロック?
- 6. 簡単な言葉で損失関数とは何ですか?
- 7. RDO for iOとは何ですか?
- 8. 非メインスレッドで非同期ioとdo ioの違いは何ですか?
- 9. F#でprintfn/IOを純粋にする
- 10. Androidの非ブロックIO
- 11. "with"、コンテキストマネージャー、python:単純な言葉で何が起こっていますか?
- 12. Scala 2.9用のscala.ioと単純なIOのガイド?
- 13. 純粋な関数内のIOアクションの意味は何ですか?
- 14. ノンブロッキングIOをバッファリングするにはどうすればよいですか?
- 15. FilewatcherはJavaのIOを非ブロックと見なしますか?
- 16. この非常に単純なコードでJava IO例外が発生するのはなぜですか?
- 17. 非ブロックIOコールのaspectjタイマー
- 18. IOコードで純関数を拡張することは可能ですか?
- 19. IO/Ruby on Railsをブロックする
- 20. JavaのファイルIOの最適な方法は何ですか
- 21. 簡単な素人の言葉で、SpringでgetBeanは何をしますか?
- 22. [Scala]:アクターとブロックIOの問題
- 23. 説明キャストと変換 - 単純な言葉の違い
- 24. デッド単純なJava IO&列挙質問が
- 25. JavaラインIOとC++ IO?
- 26. Io(プログラミング言語)の学習を開始するためのIoフレームワーク
- 27. Win32 IO Completion PortとIOの同期表示はどうなりますか?
- 28. IO以外の環境でIOアクションを実行する
- 29. ソケットの単一のオブジェクトIO
- 30. ハスケルで[IO Int]をIO [Int]に変換しますか?
...とを介して通知されますIO操作が完了したときのコールバック。これにより、プログラムのデザインが異なるようになりますが、パフォーマンスが大幅に向上します。 –
@ Lex、ブロッキング操作とノンブロッキング操作の例ありがとう。 – Kalanidhi
@etc_passwd JSでは理解しやすいです。 'alert();'の呼び出しはブロックされます。これは、ユーザーがOKをクリックするまで実行が保留されるためです。 AJAX呼び出しは非ブロックであり、HTTP要求の送信中は実行が継続されます。 –