いいえ! JavaScript がシングルスレッド言語であるということは間違っていません。これはシングルスレッド言語であり、コードを実行するために単一のメインスレッドにアクセスできます。したがって、同期プログラミングについて話すときは、すべての重労働を行ってコードを実行するこの唯一のスレッドについて話していることになります。
しかし実際には、V8 エンジンと Node.js は libuv と呼ばれる C ライブラリを使用して、6 つの追加スレッドにアクセスします。これらのうち 2 つはガベージ コレクションの実行に使用され、残りは非同期プログラミングなどのバックグラウンド タスクの実行に使用されます。
はい。コードが非同期またはノンブロッキングであると言うとき、実際に起こっていることは、非同期コードがコールバックを使用してこれらの追加スレッドに渡され、メインスレッドがコードの残りの部分をブロックすることなく作業を続行することです。
非同期コードが終了すると、コールバック関数がエラーまたは必要なデータとともにイベント キューにプッシュされます。次に、イベント ループがそれをコール スタックにプッシュし、結果を取得します。これをコードで理解します。 fs モジュールの readfile メソッドを見てみましょう。
fs.readFile("demo.text","utf8",(err,data)=>{ if(error){ return error } console.log("output",data); })
上記のコードでは、readfile メソッドがバックグラウンド スレッドに渡されます。読み取りはバックグラウンドで行われ、それが完了すると、コールバックがエラーまたはデータとともにイベント キューにプッシュされます。
コールスタックに入るとコールバックが実行され、エラーまたは出力としてデータが残ります。
読んでいただきありがとうございます。JavaScript のシングルスレッド手段について説明できれば幸いです。
以上がJavascriptはシングルスレッドではありません!!の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。