我做一些与 map 软件和数学建模相关的 C++ 编程。 有些程序需要一到五个小时才能执行并输出结果;然而,他们只消耗了我核心二人组的 50%。我在另一台基于双处理器的机器上尝试了代码,结果相同。
有没有办法强制程序使用所有可用的处理器资源和内存?
注意:我使用的是 ubuntu 和 g++
最佳答案
一个线程一次只能在一个核心上运行。如果您想同时使用两个内核,则需要找到一种方法在另一个线程中完成一半的工作。
这是否可行,如果可行,如何在线程之间划分工作,完全取决于您正在做的具体工作。
要实际创建一个新线程,请参阅 Boost.Thread docs ,或 pthreads docs ,或 Win32 API docs .
[编辑:其他人建议使用库来为您处理线程。我没有提到这些的原因是因为我没有它们的经验,而不是因为我认为它们不是一个好主意。他们可能是,但这完全取决于您的算法和平台。线程几乎是通用的,但要注意多线程编程通常很困难:您会给自己带来很多问题。]
关于c++ - 强制程序/线程使用 100% 的处理器资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1165707/