2011-10-05 22 views
2

你能告訴我如何設置一個線程來運行我的cpu的所有核心?我做了一個線程: CreateThread(0,0,線程,(LPVOID)1,0,0);但它只能以我CPU的25%的速度運行,因爲它只需要1個核心來計算。我如何將它設置爲全速使用全部4個?用於quadcore的C++線程

+0

如果您展示了代碼和目標,我們可能實際上可以提供幫助。現在你要求一個不可能的事情,所以-1從我 – sehe

+1

使用多線程(如一些答案中的建議)將使用所有的核心,但要意識到將程序更改爲多線程確實會使其更復雜,尤其是取決於在程序員的經驗和技能水平上。 – Joe

回答

2

線程將在任何時候在單個內核上運行,儘管它可能會在OS之間在內核之間切換。要讓您的應用程序利用多個核心,那麼您將需要多個線程。

您可以使用CreateThread來啓動這些線程或其周圍的包裝,例如boost::thread或新的C++ 11 std::thread。如果您有四個線程(包括第一個線程),那麼您的應用程序可以一次運行4個內核。

但是,嚮應用程序添加線程並不是輕而易舉的事情。多線程是一個複雜的話題,很難正確。多線程應用程序中可能遇到的問題比單線程應用程序還要多。因此,有關多線程編程主題的許多文章和書籍(包括mine)。

慢慢閱讀有關多線程編程的內容,然後看看這是否是您的應用程序的最佳方法,以及如何最好地利用這些內核。

1

要使用4核的所有功能,您必須同時爲這4個內核做些工作。

當你創建一個線程時,你爲1個核心做了一些工作。一個線程的執行按順序執行,按指令執行,一個指令只能由1個內核執行。

要能夠使用4個內核,請創建4個線程。

0

單線程不能在4個內核上並行運行,應該怎麼做?相反,創建更多線程(可能是4個)來利用所有內核。然後這些線程將在它們各自的核心上相互平行運行(在完美的情況下)。