November 2020
Beginner to intermediate
536 pages
6h 42m
Japanese
Node.jsのイベントループによる並行処理モデルには多くのメリットがありますが、マルチコアのシステムを用いる場合、シングルスレッドのアプリケーションをそのまま動かすだけではマシンリソースを有効に活用できません。Node.jsではマルチコアシステム上でアプリケーションを効率的に動かすための仕組みとして、clusterモジュールによるマルチプロセス化の機能が提供されています。またNode.js v10以降ではworker_threadsモジュールがコアのAPIとして新たに提供されるようになり、マルチスレッドプログラミングも可能になりました。
コンピュータは同時に複数のプロセスを起動でき、それぞれのプロセスの内部では1つ以上のスレッドによって処理が行われます。プロセス同士は互いに独立していますが、同一のプロセス内の複数のスレッドはメモリ空間などのリソースを共有します。通信のためのチャンネルを介したプロセス間通信(Inter Process Communication、IPC)と比べ、多くのリソースを共有するスレッド同士の通信は比較的容易で効率的です。
マルチコアシステムにおいては、複数プロセスも同一プロセス内の複数スレッドも、別々のコアを使って並列に実行できます。しかし、シングルスレッドなNode.jsのプロセスを1つだけ起動した場合、それはマルチコアシステムにおいても1コア上でしか実行されません。Node.jsのプログラムはシングルスレッドでもイベントループにより並行に動作しますが、1コアしか使わなければ並列に動作することはありません。
並行(concurrent)と並列(parallel)はどちらも複数のことが同時に ...