首頁 > web前端 > js教程 > 主體

javascript是什麼線程

青灯夜游
發布: 2021-11-04 17:40:30
原創
1631 人瀏覽過

javascript是單線程。作為瀏覽器腳本語言,JavaScript的主要用途是與使用者互動,以及操作DOM;這決定了它只能是單線程,否則會帶來複雜的同步問題。

javascript是什麼線程

本教學操作環境:windows7系統、javascript1.8.5版、Dell G3電腦。

JavaScript是什麼執行緒?為什麼?

JavaScript語言的一大特點就是單線程,也就是說,同一個時間只能做一件事。那麼,為什麼JavaScript不能有多個執行緒呢?這樣能提高效率啊。

JavaScript的單線程,與它的用途有關。作為瀏覽器腳本語言,JavaScript的主要用途是與使用者互動,以及操作DOM。這決定了它只能是單線程,否則會帶來複雜的同步問題。例如,假定JavaScript同時有兩個線程,一個線程在某個DOM節點上添加內容,另一個線程刪除了這個節點,而這時瀏覽器應該以哪個線程為準?

所以,為了避免複雜性,從一誕生,JavaScript就是單線程,這已經變成了這門語言的核心特徵,將來也不會改變。
為了利用多核心CPU的運算能力,HTML5提出Web Worker標準,允許JavaScript腳本建立多個線程,但是子執行緒完全受主執行緒控制,且不得操作DOM。所以,這個新標準並沒有改變JavaScript單執行緒的本質。

進程與執行緒

1.進程

程式是指程式的一次執行,它佔有一片獨有的記憶體空間,可以透過windows任務管理器查看進程(如下圖)。在同一個時間裡,同一個電腦系統中允許兩個或兩個以上的進程處於並行狀態,這是多進程。例如電腦同時運行微信,QQ,以及各種瀏覽器等。 瀏覽器運行是有些是單進程,如firefox和舊版IE,有些是多進程,如chrome和新版IE

2.執行緒

有些行程不只同時做一件事,例如Word,它可以同時進行打字、拼字檢查、列印等事情。在一個進程內部,要同時幹多件事,就需要同時運行多個“子任務”,我們把進程內的這些“子任務”稱為線程(Thread)。
執行緒是指CPU的基本調度單位,是程式執行的一個完整流程,是進程內的一個獨立執行單元。多執行緒是指在一個行程內, 同時有多個執行緒運行。 瀏覽器運行是多執行緒。例如用瀏覽器一邊下載,一邊聽歌,一邊看影片。另外我們需要知道JavaScript語言的一大特點就是單線程,為了利用多核心CPU的運算能力,HTML5提出Web Worker標準,讓JavaScript腳本建立多個線程,但子執行緒完全受主執行緒控制,且不得操作DOM。所以,這個新標準並沒有改變JavaScript單執行緒的本質

由於每個行程至少要做一件事,所以,一個行程至少有一個執行緒。當然,像Word這種複雜的進程可以有多個線程,多個線程可以同時執行,多線程的執行方式和多進程是一樣的,也是由作業系統在多個線程之間快速切換,讓每個線程都短暫地交替運行,看起來就像同時執行一樣。當然,真正地同時執行多執行緒需要多核心CPU才可能實現。

3.行程與執行緒

  • 應用程式必須運行在某個行程的某個執行緒上
  • 一個行程至少有一個運行的線程: 主線程,  進程啟動後自動創建
  • 一個進程中如果同時運行多個線程, 那這個程序是多線程運行的
  • 一個進程的內存空間是共享的,每個線程都可以使用這些共享記憶體。
  • 多個行程之間的資料是不能直接共享的

4.單執行緒與多執行緒的優缺點?

單執行緒的優點:順序程式設計簡單易懂

單執行緒的缺點:效率低

多執行緒的優點:能有效提升CPU的使用率

多執行緒的缺點:

  • #建立多執行緒開銷
  • 執行緒間切換開銷
  • 死鎖與狀態同步問題

【推薦學習:javascript高階教學

以上是javascript是什麼線程的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板