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

标签 c++ multithreading

我做一些与 map 软件和数学建模相关的 C++ 编程。 有些程序需要一到五个小时才能执行并输出结果;然而,他们只消耗了我核心二人组的 50%。我在另一台基于双处理器的机器上尝试了代码,结果相同。

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

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

最佳答案

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

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

要实际创建一个新线程,请参阅 Boost.Thread docs ,或 pthreads docs ,或 Win32 API docs .

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

关于c++ - 强制程序/线程使用 100% 的处理器资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1165707/

相关文章:

c++ - 运行时检查 : stack around variable was corrupted

c++ - 以对象为参数的函数,作为另一个函数的参数

从模板实例化后声明的模板函数选择候选者调用的 C++ 模板重载决策

c# - 如何将 Parallel.ForEach 与线程局部状态一起使用?

java - threadlocal 是否应该声明为最终字段

c++ - 调试段错误

c++ - 在 C++ 中,如何将当前函数的所有参数传递给另一个函数?

Python TCP 套接字 : How to know if a specific connection has sent information

c# - "Cross thread operation not valid"..在串行端口上读取数据时

c - ANSI C 中带有 PTHREADS 的执行程序池