2011-03-27 125 views
2

我正在爲多核機器編寫可移植代碼,並且我想要內核級線程,以便線程可以使用多個cpu。在閱讀Qt助手的QThread文檔後,我仍然沒有發現任何提示。QThread是在用戶級別,內核級別還是兩者上?

在Windows XP上,QtSDK中的多線程示例(mandelbrot)僅使用一個內核。所以我猜想在XP上只有用戶級別的線程是可能的。因爲沒有安裝完整的SDK,所以我還沒有在Linux或OSX上測試過。 編輯:在SDK中給出的例子是愚蠢的 - 它只使用一個線程進行計算,所以綁定到只有一個核心是誤導。自己構建一個示例我可以使用所有內核,所以在XP上使用mingw/GCC Qt使用內核級線程。

那麼,QThread使用什麼樣的線程?是否可以指定使用哪種線程?

多個進程也是一個與共享內存結合的選項。

編輯

http://doc.qt.io/qt-4.8/thread-basics.html給出了一個很好的介紹。

回答

3

我不知道Windows,但在Unix上它使用pthreads。 QT不會公開API,因爲它需要與平臺和硬件無關。跨CPU的QThread分發留給OS調度器,你不能通過一些QT API來提示它。

3

QThread Class Reference

甲的QThread代表程序內的控制的一個單獨的線程;它與進程內的所有其他線程共享數據,但是獨立執行的方式是單獨的程序在多任務操作系統上執行的方式。

用你的話說,這是一個「內核」線程。

另外,在Windows XP上「只有用戶級線程可行」的結論肯定是不正確的。

相關問題