强制程序/线程使用100%的处理器资源

das*_*uki 2 c++ multithreading

我做了一些与绘图软件和数学建模相关的c ++编程.有些程序需要一到五个小时才能执行并输出结果; 但是,他们只占我核心二人组的50%.我在另一台基于双处理器的机器上尝试了相同的结果.

有没有办法强制程序使用所有可用的处理器资源和内存?

注意:我正在使用ubuntu和g ++

Ste*_*sop 10

一个线程一次只能在一个核心上运行.如果要使用两个核心,则需要找到一种方法在另一个线程中完成一半的工作.

这是否可行,如果可行,如何划分线程之间的工作,完全取决于您正在进行的具体工作.

要实际创建新线程,请参阅Boost.Thread文档,pthreads文档Win32 API文档.

[编辑:其他人建议使用库来为您处理线程.我没有提到这些的原因是因为我没有他们的经验,不是因为我认为他们不是一个好主意.它们可能是,但这完全取决于您的算法和平台.线程几乎是通用的,但要注意多线程编程通常很难:你为自己创造了很多问题.


Sim*_*ker 5

最快的方法是阅读有关openMP并使用它来并行化您的程序.

使用g++ -fopenmpg ++版本提供的命令进行编译>=4