いいえ! JavaScript がシングルスレッド言語であるということは間違っていません。これはシングルスレッド言語であり、コードを実行するために単一のメインスレッドにアクセスできます。したがって、同期プログラミングについて話すときは、すべての重労働を行ってコードを実行するこの唯一のスレッドについて話していることになります。
しかし実際には、V8 エンジンと Node.js は libuv と呼ばれる C ライブラリを使用して、6 つの追加スレッドにアクセスします。これらのうち 2 つはガベージ コレクションの実行に使用され、残りは非同期プログラミングなどのバックグラウンド タスクの実行に使用されます。
はい。コードが非同期またはノンブロッキングであると言うとき、実際に起こっていることは、非同期コードがコールバックを使用してこれらの追加スレッドに渡され、メインスレッドがコードの残りの部分をブロックすることなく作業を続行することです。
非同期コードが終了すると、コールバック関数がエラーまたは必要なデータとともにイベント キューにプッシュされます。次に、イベント ループがそれをコール スタックにプッシュし、結果を取得します。これをコードで理解します。 fs module.
の readfile メソッドを見てみましょう。
fs.readFile("demo.text","utf8",(err,data)=>{ if(error){ return error } console.log("output",data); })
上記のコードでは、readfile メソッドがバックグラウンド スレッドに渡されます。読み取りはバックグラウンドで行われ、それが完了すると、コールバックがエラーまたはデータとともにイベント キューにプッシュされます。
コールスタックに入るとコールバックが実行され、エラーかデータが出力として残ります。
読んでいただきありがとうございます。JavaScript のシングル スレッド手段について説明できれば幸いです。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3