Linuxのブロッキングとノンブロッキングの違いはなにか?

Linuxにおけるブロッキング(Blocking)とノンブロッキング(Non-Blocking)は、主にI/O操作の動作を指します。

  1. ブロッキング(Blocking):ブロッキング(Blocking)IO操作を実行すると、アプリは操作が完了するかエラーが発生するまでずっと待ちます。その間、アプリは他のタスクを実行できず、IO操作でずっと停止します。
  2. 非ブロッキング(ノンブロッキング):非ブロッキングI/Oとは、処理が完了したりエラーが発生するのを待たずに、アプリからすぐに戻ってくるI/O処理のことです。処理がすぐに完了すれば、アプリは他のタスクに進むことができます。完了を待たなければならない場合は、ステータスをひたすら調べ続けるポーリングを行ったり、コールバック関数を用いたりして完了を待つことができます。

まとめると、ブロッキングモードではアプリケーションはI/O処理が完了するまでずっと待機します。一方非ブロッキングモードでは、アプリケーションはすぐに戻り、I/O処理が完了するまで待機しません。非ブロッキングモードでは通常、アプリケーションはアクティブに照会またはコールバックして処理の完了の状態を取得する必要があります。

bannerAds