2017-09-01 32 views
-2

我正在MongoDB中構建數據建模的中間部分,它將與Nodejs一起工作。我很想理解線程在Javascript中如何處理執行流的基本級工作。基本上我想明白,如果他們在Javascript的線程的執行方面有任何差異& Nodejs。 javascript是單線程的,並且基於v8 javascript的Nodejs也是單線程的!這兩者在執行方面有什麼突破之處?Javascript是如何工作的單線程和NodeJS單線程在流程執行方面有所不同

+1

Javascript是一種語言,Node是運行這種語言的引擎。 –

+2

@JeremyThille要學究節點是一個環境,V8是JS引擎 –

+0

我正在努力簡化事情:) –

回答

1

在你的問題中的術語有點搞砸了,因此它看起來你的問題有點誤導。試圖將「Javascript」與node.js進行比較並沒有什麼意義。 node.js運行Javascript代碼就好了。你並沒有真正比較兩者。我將假設你想要比較的是「Chrome瀏覽器中的Javascript」與「node.js中的Javascript」。

Javascript在Chrome(或任何其他瀏覽器)和node.js中的主線程是單線程的。它們在這方面表現相同,事實上,node.js和Chrome使用完全相同的V8 Javascript執行引擎。與外界或其他本地代碼的所有協調都是通過事件隊列進行的。

現代瀏覽器確實有允許附加線程的Javascript的webWorkers,但這些線程在他們可以做什麼(例如,他們無法訪問DOM)以及他們如何與主Javascript線程(所有通信是通過消息傳遞的 - 直接函數調用或共享變量是不允許的)。 web工作者幾乎和獨立進程一樣孤立,在node.js中。

Chrome和node.js都有本地代碼庫,它們使用本機線程來實現它們的工作,但是當它們與用戶的Javascript代碼交互時,它們都會通過事件隊列,這就是它們如何連接單線程Javascript碼。