ホームページ > ウェブフロントエンド > jsチュートリアル > Javascriptはシングルスレッドではありません!!

Javascriptはシングルスレッドではありません!!

王林
リリース: 2024-07-23 11:57:20
オリジナル
727 人が閲覧しました

いいえ! JavaScript がシングルスレッド言語であるということは間違っていません。これはシングルスレッド言語であり、コードを実行するために単一のメインスレッドにアクセスできます。したがって、同期プログラミングについて話すときは、すべての重労働を行ってコードを実行するこの唯一のスレッドについて話していることになります。
Image description

しかし実際には、V8 エンジンと Node.js は libuv と呼ばれる C ライブラリを使用して、6 つの追加スレッドにアクセスします。これらのうち 2 つはガベージ コレクションの実行に使用され、残りは非同期プログラミングなどのバックグラウンド タスクの実行に使用されます。

はい。コードが非同期またはノンブロッキングであると言うとき、実際に起こっていることは、非同期コードがコールバックを使用してこれらの追加スレッドに渡され、メインスレッドがコードの残りの部分をブロックすることなく作業を続行することです。

Javascript is NOT single threaded!!
非同期コードが終了すると、コールバック関数がエラーまたは必要なデータとともにイベント キューにプッシュされます。次に、イベント ループがそれをコール スタックにプッシュし、結果を取得します。これをコードで理解します。 fs モジュールの readfile メソッドを見てみましょう。

fs.readFile("demo.text","utf8",(err,data)=>{
    if(error){       
        return error
    }
    console.log("output",data);
})
ログイン後にコピー

上記のコードでは、readfile メソッドがバックグラウンド スレッドに渡されます。読み取りはバックグラウンドで行われ、それが完了すると、コールバックがエラーまたはデータとともにイベント キューにプッシュされます。

Javascript is NOT single threaded!!

コールスタックに入るとコールバックが実行され、エラーまたは出力としてデータが残ります。
読んでいただきありがとうございます。JavaScript のシングルスレッド手段について説明できれば幸いです。

以上がJavascriptはシングルスレッドではありません!!の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート