2012-04-30 34 views
7

正如我在標題中寫的,我想知道是否在用戶或內核空間中管理C++ stantard線程。std :: threads在用戶或內核空間中進行管理?

謝謝。

+1

在哪個平臺上?就標準而言,兩種選擇同樣有效。 – Fanael

+2

該標準沒有指定,但考慮到內核線程占主導地位的程度,我認爲可以肯定地猜測大多數實現可能使用內核線程。 –

+1

在C++中沒有這樣的「內核」。您的問題不適用於C++作爲一種語言。 –

回答

13

由於幾乎總是發生,該標準不要求任何特定的實現,它只是要求行爲表現符合其規則。

因此,特定的實現是可以自由選擇的;另一方面,可能很多實現將基於boost.thread(其中std::thread提案所基於的),所以我們可以看看它有一個想法。

此庫使用上的Win32 POSIX和Windows線程並行線程。 Win32的線程肯定是內核線程,而是對自己並行線程只是另一個接口,這可能無論是在用戶空間和內核空間中實現(雖然幾乎所有最新的UNIX內核提供設施,以實現他們在內核空間) 。

所以:std::thread可以是任何東西,不過,在「主流」的PC操作系統/實現,它很可能你會得到內核線程。如果由於某種原因您需要了解更多信息,請查看您的編譯器文檔。

+0

IIRC,Dinkumware的線程實現是潔淨室實現,不是Boost派生的,它也使用內核線程。 – MSalters

4

接口是designed around pthreads,但它是由libc中++來決定使用什麼樣的實施者。

+0

@Jerry:編輯。 –

+0

+1 - 看起來更準確,至少對我來說。 –

相關問題