當前位置:編程學習大全網 - 網絡軟體 - 單核和多核,單進程和多進程,單線程與多線程

單核和多核,單進程和多進程,單線程與多線程

之前我對單進程、多進程、單線程、多線程,單核、多核、並發、並行;總是沒有詳細的認知;因此準備歸納總結下,加強自己的記憶。 (這裏的並發不是網絡並發,請區別對待)

我們先理解下進程在 CPU 中的並行方式:

進程執行需要系統資源,但是不同的進程間是無法***享 CPU ,怎麽樣才能***享資源和 CPU 呢? 線程 (有些程序中叫 協程 )的概念就出現了,線程是被包含在進程中,同壹進程中的不同線程可以***享 CPU 和 程序上下文 (進程被分配到的資源)

在單核單 CPU 中,在同壹個進程中的不同線程想要使用 CPU 核心,則會進行線程切換,但是由於***享了程序執行環境,這個線程切換會比進程切換開銷小很多。註意:由於 CPU 是單核的,所以同時刻只能執行壹個線程,所以說這裏依然是並發。

如果我們的 CPU 是多核的呢?那麽進程中的不同線程就可以同時運行了,真正的 並行 就出現了

文章的開頭我們提到過 線程是CPU調度和分配的基本單位 。要和 進程是操作系統進行資源分配的最小單位 區分;假設我是 CPU ,操作系統調度器將壹個進程分配給我之後,我拿到進程後,能看到什麽,是不是只能看到進程中的多個線程,那麽我現在能調度和分配的是不是只能是線程。如果我是4核的,把線程 ABCD 分配到核心1234,其他的線程依然要等待分配。所以線程是 CPU 調度和分配的基本單位。

單 CPU 中進程只能是並發,多 CPU 中進程可以並行。

單 CPU 單核中線程只能並發,單 CPU 多核中線程可以並行。

理解了上面這些關系,再去看看 從瀏覽器多進程到JS單線程,JS運行機制最全面的壹次梳理 ,思路會更加清晰

  • 上一篇:密室逃脫逃出陰森鬼屋2通關流程圖文詳解 詳解怎麽玩
  • 下一篇:PC套件是什麽意思?
  • copyright 2024編程學習大全網