2016-04-30 33 views
4

有人可以給出更多的解釋單線程和多線程的進程

單線程進程是否只包含一個線程?或者它意味着該進程可以包含多個線程,並且一次只能運行一個線程,然後在它們之間進行上下文切換?

如果我在單核處理器上運行java程序,第二個是真的嗎?

有人可以進一步解釋嗎?單線程進程是否只包含一個線程?

+1

單CPU或核心VS多CPU是與進程中有多少個線程正交(所有四個選項都可用)。 – Richard

回答

2

單線程進程是一個單線程進程。多線程進程是一個具有多個線程的進程。

命名基於靜態配置,即您可以查看執行暫停時的進程並說明它是單線程還是多線程。就命名而言,線程是在單核還是多核上執行並不重要。

多個線程全部在單個內核上執行的進程可能具有競爭條件,跨多個線程執行的進程也可能具有競爭條件。區分這兩種情況對於性能評估非常重要,但對於正確性會產生反效果(即,在考慮潛在競爭時,假設每個線程位於單獨的CPU上是有用的)。

單線程程序程序只使用一個線程。 進程可能有其他線程;對於Java運行時的例子,你可以期望有一個終結器線程,或許有一個或多個線程用於垃圾收集。這是一個單線程程序在多線程進程中運行。

(我聽說「過程」定義爲「在執行程序的抽象」,即你寫一個程序,然後在過程中執行它。)

相關問題