ブロックと非ブロック


ブロックと非ブロック



1. Blocking


同期


自分の実行結果が終わるまで制御権を持つ.

短所

  • 前のコマンドが処理されていない場合、後のコマンドは処理を遅らせ続け、ボトルネックになる
  • multi-thread:1つのコマンドに1つのスレッドを割り当て、複数のコマンドを同時に処理することで問題を解決しますが、各コマンドには1つのスレッドが割り当てられます.
    コマンドの数が多い場合、サーバが所有するリソースは限られているため、サーバをアップグレードするか、複数のサーバに分散する必要があります.
  • 2. Non-Blocking


    非同期

  • は、自分を呼び出すときに、自分を呼び出す側に制御権を直接渡す.
    自分の側を呼んで他のことをすることを許可します.
  • 長所

  • は、前のコマンドが処理されるのを待たないため、コマンドが遅延されるボトルネック現象はない.
  • single-thread:スレッドを使用

  • 3.コード比較


    動機。

    const fs = require('fs')
    const data = fs.readFileSync('/file.md') // 파일을 읽을 때까지 여기서 블로킹 됩니다.

    非同期

    const fs = require('fs')
    fs.readFile('/file.md', (err, data) => {
    	if (err) throw err
    })
  • の第1の例は、第2の行がファイル全体を読み出す前に他のJavaScriptの実行をブロックするという欠点があるが、第2の行よりも簡単に見える.
  • 同期例では、エラーが発生した場合、処理が必要です.そうしないと、プロセスは死亡します.
  • 非同期例では、エラーが投げ出されるかどうかは、著者らによって決まる.
  • ブロッキングと非ブロッキングの表示
    What is Node.js ?

    4.同時性と並列性


    非同期操作を行う場合、ConcurrencyおよびParallelismについてよく議論される.


    同時

  • 複数のスレッドを一度に処理する
  • 1カーネル内で複数のスレッドを交互に実行する性質:
  • 同時運転のように見える
  • ですが、実際は時分割交互運転の
  • です.
  • 論理的観点
  • へいれつせい

  • 複数のスレッドを一度に実行する
  • マルチコアでは、各コアは実際に同時に動作する.
  • 物理的観点
  • 同時性-1
    同時性-2