首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >强制程序/线程使用100%的处理器资源

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

Stack Overflow用户
提问于 2009-07-22 14:30:52
回答 9查看 2.7K关注 0票数 2

我做一些与绘图软件和数学建模相关的c++编程。有些程序需要一到五个小时来执行和输出结果;然而,它们只占用我核心duo的50%。我在另一台基于双处理器的机器上测试了代码,得到了相同的结果。

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

注意:我使用的是ubuntu和g++

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2009-07-22 14:32:25

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

这是否可能,如果是的话,如何在线程之间分配工作,完全取决于您正在做的具体工作。

要实际创建新线程,请参阅Boost.Thread docspthreads docsWin32 API docs

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

票数 10
EN

Stack Overflow用户

发布于 2009-07-22 14:34:47

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

如果您的g++版本是>=4,则使用命令g++ -fopenmp进行编译

票数 5
EN

Stack Overflow用户

发布于 2009-07-22 14:34:42

为了能够潜在地使用所有处理器时间,您需要运行与可用CPU核心一样多的线程。(不过,您仍然可以被其他任务抢先一步。)

有很多方法可以做到这一点,这完全取决于您正在处理的是什么。但是,您可以使用OpenMP或像TBB这样的库来几乎透明地完成此操作。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1165707

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档