2013-08-16 71 views
2

有人可以闡明它嗎?我可以運行8個線程,但我很確定我們可以在JAVA或C++中創建超過8個線程(雖然不知道)。我有一個i5,在研究併發時,我爲任務做了10個線程。我只是想了解CPU的核心評級如何與線程相關。線程(在java或C++程序中)和CPU中的內核數量之間的關係是什麼?

+0

「任務」本質上是一個「虛擬CPU」。在Java中,一個線程對應於一個任務。處理器包含的「核心」(實際CPU)越多,它可以同時運行的任務就越多,但是如果比核心有更多的「就緒」任務,剩下的任務將由任務調度程序/調度程序「旋轉」,共享單個核心以某種「時間片」的方式。 –

回答

0

線程由操作系統的調度程序處理。 CPU中的內核數量決定了它可以同時運行多少個線程

請注意,調度程序不斷切換和切換線程以給出「幻覺」,即所有內容都在同一時間運行。

更多here,如果你有興趣。

5

您引用的線程稱爲軟件線程;只要您的操作系統允許,您可以根據需要創建任意數量的軟件線程。每個軟件線程或代碼片段可以同時運行和其他

對於每個核心,有至少一個硬件線程到該操作系統可以指定一個軟件線程。例如,如果您有8個內核,則您有一個容量爲8的硬件線程池。您可以將數十或數百個軟件線程映射到此8槽池,其中只有8個線程實際上在硬件上同時運行,即並行

軟件線程就像共享同一臺計算機的人一樣。每個人都可以使用這臺電腦一段時間,不一定完成他的任務,然後把它交給另一個。

硬件線程就像每個人都有一臺計算機的人。他們都可以同時處理他們的任務。

:對於i7處理器,有two hardware threads(所謂超線程)在每個核心。所以你可以有多達16個線程並行運行。

+0

不錯的鏈接,我們必須爲他弄明白。 **核心線程**,_kernel_thread_,程序線程。 – Dru

+1

難道是16線程(8核心x 2線程)? – jpmc26

+0

我錯了,認爲它是7核心。更新。 –

0

不,不,不,你的I7有8個執行線程,並且可以一次運行8個線程。

1000個線程或更多可以等待處理器時間。

調用thread.sleep將一個線程移出執行核心並返回到內存中,等待直到喚醒。

+0

我的小上網本有一個cpu,兩個內核和四個硬件線程,因爲每個內核可以一次運行兩個線程。 – Dru

+0

CPU是一個芯片上的封裝,可以從主板獲取。在CPU上,可以有多個核心,可以想象將一個正方形分成四個四分之一。每個內核可以有多個執行線程。 – Dru

1

「線程」是一個軟件抽象,它定義了一個通過程序執行的單一自我一致的路徑:在大多數現代系統中,線程的數量基本上只受內存的限制。但是,CPU只能運行相對較少的線程數。一般來說,「核心計數」是CPU可以並行運行多少個線程:如果有更多的線程想要運行,而不是有可用的內核,操作系統將使用某種類型的時間片來讓所有的線程有一些時間來執行。

有一大堆的術語被當談到攔腰抱住「內核:」

  • 處理器數量:物理CPU芯片的系統主板上的號碼。這是唯一重要的數字,直到具有多個內核的CPU變得可用。
  • 邏輯核心數量:該系統的硬件可以運行的線程數量平行
  • 物理核心數量:該系統具有的CPU執行的硬件拷貝的數量 - 這並不總是等於到邏輯核心數,由於它們使用單​​片硬件的並行
  • 模塊運行多個線程的功能,如SMT(「同時多線程」)計數:近期(推土機衍生)AMD處理器已經使用這是一種混合SMT和t的體系結構他是標準的單核心物理核心模型。在這些CPU上,每個邏輯核心都有一個單獨的整數執行硬件副本,但是兩個邏輯核心共享一個浮點單元以及讀取和解碼前端; AMD稱該單元包含兩個邏輯核心模塊

還應該簡要提及的是,GPU和圖形卡具有巨大的核心數量並且並行運行大量(數千)線程。權衡的是,GPU內核的內存非常少,而且通常是一種嚴格限制的編程模型。

+0

邏輯核心數用於分區硬件。任何內核如果以這種方式構建,都可以運行多個線程。 – Dru

2

關於事物的硬件方面已經有一些好的答案,但沒有太多關於事物的軟件方面的討論。

我相信你缺少的基本事實是並非所有線程都必須始終執行。當一臺8核心機器上有數千個線程時,只有少數線程在任何給定的時間都運行。其他人坐在一起無所事事,直到一些處理器時間變得自由。這具有巨大的優勢,因爲線程可能正在等待其他資源。例如,如果我有一個線程試圖從磁盤讀取文件,那麼在等待硬盤數據加載到RAM中時,沒有理由佔用CPU時間。另一個例子是當線程正在等待來自其他機器的響應(例如通過互聯網的網絡請求)時。當你的線程數多於你的處理器一次處理時,操作系統和/或運行時(它取決於操作系統和運行時實現)負責決定哪些線程應該獲得處理器時間。這種設置可以讓您最大限度地提高機器的生產效率,因爲CPU週期幾乎可以隨時做一些有用的事情。

相關問題