首頁  >  文章  >  web前端  >  JavaScript 不是單線程的!

JavaScript 不是單線程的!

王林
王林原創
2024-07-23 11:57:20693瀏覽

不! JavaScript 是一種單線程語言,這一點你沒有聽錯。它是一種單線程語言,它可以存取單一主線程來執行程式碼。因此,當我們談論同步編程時,我們談論的是這個單獨的線程完成所有繁重的工作並執行我們的程式碼。
Image description

但實際上,V8 引擎和 Node.js 使用名為 libuv 的 C 函式庫來存取六個額外執行緒。其中兩個用於進行垃圾收集,其餘用於執行非同步程式設計等後台任務。

是的。當我們說程式碼是非同步或非阻塞時,真正發生的情況是非同步程式碼透過回呼傳遞給這些額外的線程,並且主線程繼續執行其工作而不會阻塞其餘程式碼。

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn