[解決済み] マルチスレッドに代わるNode JSを把握する
2022-05-03 08:56:32
質問
私が正しく理解していれば、Node JSはノンブロッキングです。つまり、データベースや他のプロセスからの応答を待つ代わりに、他のことに移動して後でチェックバックします。
また、シングルスレッドであることも特徴です。
つまり、あるNode JSプロセスは、1つのCPUコアを完全かつ効率的に利用することができますが、マシン上の他のコアを利用することはない、ということです。
もちろん、他のCPUは、SQLデータベースなど、意図的に分離されたCPUの重いサブルーチンを別のプロセスで使用できることを意味します。
また、Node JSのプロセスが無限ループや長時間実行する機能を持っている場合、そのプロセスは無限ループや長時間実行する機能を停止する(またはプロセス全体を殺す)までは、もはやいかなる意味でも役に立ちません。
これはすべて正しいのでしょうか?私の理解は正しいですか?
どのように解決するのですか?
ほぼ正解です、はい。node.jsサーバーは内部スレッドプールを持っているので、ブロック処理を行い、処理が完了したらコールバックやイベントでメインスレッドに通知することができるのです。
たとえば、ノンブロッキングでファイルシステムを読み込む場合、スレッドプールのスレッドに読み込みを実行させ、完了したらコールバックを設定することで実装するようです。つまり、メインのnode.jsプログラムが何かを行っている間に、別のスレッド/コアで読み込みが行われる可能性があります。
しかし、node.jsの観点からは、完全にシングルスレッドで、複数のコアを直接使用することはありません。
関連
-
[解決済み] package.jsonのチルダ(~)とキャレット(^)の違いは何ですか?
-
[解決済み] npm installの-saveオプションは何ですか?
-
[解決済み] インストールされているnpmパッケージのバージョンを検索する
-
[解決済み] npm package.jsonファイルのdependencies, devDependencies, peerDependenciesの違いは何ですか?
-
[解決済み] package.jsonの各依存関係を最新バージョンに更新する方法は?
-
[解決済み] プロセスとスレッドの違いは何ですか?
-
[解決済み] 一般的に、Node.jsは10,000の同時リクエストをどのように処理するのですか?
-
[解決済み】サーブレットはどのように動作するのですか?インスタンス化、セッション、共有変数とマルチスレッド
-
[解決済み】Node.jsのシングルスレッド・ノンブロッキングIOモデルの動作について
-
[解決済み] コンパイル時の-pthreadと-lpthreadの違いについて
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] レースコンディションとは何ですか?
-
[解決済み] デッドロックとライブロックの違いは何ですか?
-
[解決済み】Node.jsはなぜシングルスレッドなのですか?[クローズド]
-
[解決済み] 再帰的ロック (Mutex) vs 非再帰的ロック (Mutex)
-
[解決済み] 技術的に、なぜErlangのプロセスはOSのスレッドよりも効率的なのですか?
-
[解決済み] ロックされていないミューテックスをロックすることは、どの程度効率的ですか?ミューテックスのコストは?
-
[解決済み] マルチスレッドに代わるNode JSを把握する
-
[解決済み] スレッドセーフとは何ですか?
-
[解決済み] 非同期とマルチスレッド - 違いはあるのか?
-
[解決済み] ノンブロッキングI/Oは、マルチスレッドのブロッキングI/Oより本当に速いのか?どのように?