JavaScriptってシングルスレッドしかできなかと思ってた

それゆえにpromiseとか、async/awaitとかの非同期処理のための機能が用意されているのですが、

① ブラウザならばWeb Worker:一部制限はあるけれどもマルチスレッド動作ができる。こういう機能無かったらブラウザでのマルチスレッド処理は著しく不便になりそう、元々ブラウザは同時にたくさんのスレッドが動いているし、

スレッド間通信(postMessage/onmessage API)はevent emitterのemit/onと類似だし、Golangのチャネルとも似ていますが、安全に通信(スレッド間)を行おうとするとこのようなAPIが必要になるのはどの言語でも共通でしょう。

② Node.jsならば子プロセス、マルチスレッドのためにはworker_threadというAPIが用意されているようです。子プロセスなのでスレッドよりもリソースの分離性は良くなるでしょう、負荷は高くなりそうですが。

プロセス間通信はsend/on APIを使うのはWeb Workerとも類似だし、子プロセスの起動にforkを使うのもほぼそうだろうと思います。

個人的にはNode.jsではマルチスレッド(プロセス)を使ってみる機会がありそうです。

 

admin