你能告诉我如何设置一个线程来运行我的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. 多核正在使用一个线程(在quadcore上CPU使用率> 25%)
- 2. 用于C++ 11的线程,用新的
- 3. 关于c中的线程#
- 4. 用于后台加载的C++线程
- 5. C++的基于线程的线程安全的std :: cerr
- 6. 用于c编程语言的线程的计时器
- 7. Objective C,关于线程的问题
- 8. 基于C++的线程类库11
- 9. 关于C#线程与RFID的问题
- 10. 用于多线程
- 11. sched_yield用于C语言中的线程程序
- 12. 需要关于c#中多线程应用程序的指导。
- 13. 用于线程程序
- 14. 从C调用C++线程
- 15. 与线程用C
- 16. 使用线程C#
- 17. 对于C++ MacOSX应用程序,使用什么线程库?
- 18. C++多线程数据结构,用于两个线程之间的通信
- 19. C++提升线程重用线程
- 20. 使用C++中的线程
- 21. C#应用程序线程
- 22. 用于C#窗口应用程序的在线数据库
- 23. C++ Boost由于CPU类型,多线程比单线程慢?
- 24. 在Objective C(Cocoa)线程中运行C代码(适用于iOS)
- 25. 基于多线程的基于pthread的多线程实用程序库
- 26. 单线程C多线程#
- 27. ps中的zombiefied线程(用c编写的线程程序)
- 28. 关于多线程的java多线程
- 29. 基于线程ID的中断线程
- 30. Java或C#的线程基于用户空间线程或内核空间线程?
如果您展示了代码和目标,我们可能实际上可以提供帮助。现在你要求一个不可能的事情,所以-1从我 – sehe
使用多线程(如一些答案中的建议)将使用所有的核心,但要意识到将程序更改为多线程确实会使其更复杂,尤其是取决于在程序员的经验和技能水平上。 – Joe