你能告訴我如何設置一個線程來運行我的cpu的所有核心?我做了一個線程: CreateThread(0,0,線程,(LPVOID)1,0,0);但它只能以我CPU的25%的速度運行,因爲它只需要1個核心來計算。我如何將它設置爲全速使用全部4個?用於quadcore的C++線程
2
A
回答
2
線程將在任何時候在單個內核上運行,儘管它可能會在OS之間在內核之間切換。要讓您的應用程序利用多個核心,那麼您將需要多個線程。
您可以使用CreateThread
來啓動這些線程或其周圍的包裝,例如boost::thread
或新的C++ 11 std::thread
。如果您有四個線程(包括第一個線程),那麼您的應用程序可以一次運行4個內核。
但是,嚮應用程序添加線程並不是輕而易舉的事情。多線程是一個複雜的話題,很難正確。多線程應用程序中可能遇到的問題比單線程應用程序還要多。因此,有關多線程編程主題的許多文章和書籍(包括mine)。
慢慢閱讀有關多線程編程的內容,然後看看這是否是您的應用程序的最佳方法,以及如何最好地利用這些內核。
1
要使用4核的所有功能,您必須同時爲這4個內核做些工作。
當你創建一個線程時,你爲1個核心做了一些工作。一個線程的執行按順序執行,按指令執行,一個指令只能由1個內核執行。
要能夠使用4個內核,請創建4個線程。
0
單線程不能在4個內核上並行運行,應該怎麼做?相反,創建更多線程(可能是4個)來利用所有內核。然後這些線程將在它們各自的核心上相互平行運行(在完美的情況下)。
相關問題
- 1. Dualcore vs Quadcore for Development
- 2. 用於C++ 11的線程,用新的
- 3. 關於c中的線程#
- 4. 用於後臺加載的C++線程
- 5. C++的基於線程的線程安全的std :: cerr
- 6. 有多少ec2計算單元將等同於一個quadcore
- 7. 用於c編程語言的線程的計時器
- 8. 類似於C#中用於線程間通信的管道類
- 9. 關於C#線程與RFID的問題
- 10. 基於C++的線程類庫11
- 11. Objective C,關於線程的問題
- 12. 用於多線程
- 13. 需要關於c#中多線程應用程序的指導。
- 14. sched_yield用於C語言中的線程程序
- 15. 用於線程程序
- 16. 從C調用C++線程
- 17. 使用線程C#
- 18. 使用線程C#
- 19. 與線程用C
- 20. 對於C++ MacOSX應用程序,使用什麼線程庫?
- 21. C++多線程數據結構,用於兩個線程之間的通信
- 22. 使用C++中的線程
- 23. C++提升線程重用線程
- 24. C#應用程序線程
- 25. 用於C#窗口應用程序的在線數據庫
- 26. C++ Boost由於CPU類型,多線程比單線程慢?
- 27. 在Objective C(Cocoa)線程中運行C代碼(適用於iOS)
- 28. 使用使用C++ 11線程庫C++ 11個線程
- 29. 單線程C多線程#
- 30. 基於多線程的基於pthread的多線程實用程序庫
如果您展示了代碼和目標,我們可能實際上可以提供幫助。現在你要求一個不可能的事情,所以-1從我 – sehe
使用多線程(如一些答案中的建議)將使用所有的核心,但要意識到將程序更改爲多線程確實會使其更復雜,尤其是取決於在程序員的經驗和技能水平上。 – Joe