c++ - 如何在多个处理器上运行 boost::threads?

标签 c++ multithreading boost parallel-processing boost-thread

我使用具有许多 amd64 处理器和 Debian Squeeze 的虚拟机计算机集群。此前,我已成功在其上并行执行 shell 脚本(使用 GNU Parallel)。现在,我想使用 boost::threads。我运行这个程序:

#include <boost/thread.hpp>

using namespace std;
boost::thread_group g;

void foo()
{
    for(int i = 0; i < 1000000000; ++i) 
        for(int i = 0; i < 1000000000; ++i);
}

int main(int argc, char* argv[])
{
    g.add_thread(new boost::thread(foo));
    g.add_thread(new boost::thread(foo));
    g.add_thread(new boost::thread(foo));

    g.join_all();
}

所有这些线程都在单个处理器上运行,利用率为 300%(根据 top 命令)。如何使这三个线程运行在三个独立的处理器上? boost::threads 可以吗?

注意:此 Multiprocessor Boost::Thread? All threads running on one processor尽管有标题,但它是关于多核系统的,而我的实际上是关于多处理器系统的。

最佳答案

运行正常。您正在生成三个线程,并且所有三个线程都同时运行。多线程应用程序中报告的 CPU 使用率是所有线程的 CPU 使用率之和。您有 3 个线程,每个线程都使用 100%,因此您的使用率为 300%。

几乎所有线程库中的多核和多 CPU 插槽都是一样的。你必须不遗余力地辨别差异,例如。 libNUMA。

关于c++ - 如何在多个处理器上运行 boost::threads?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19063079/

相关文章:

c++ - 隐式转换为显式 bool 类型以对容器进行排序?

c++ - 从已在基类中正确定义的子类调用未定义的虚方法时出错

java - 与并发共享变量

c++ - C++中的多线程广播聊天

c++ - 在 MEX 中超快地将二进制文件写入磁盘

c++ - 缺少包含不会在 RedHat 6 上产生编译错误

ios - 多线程编译问题

c++ - 如何使用 boost 和 Firebreath 从 python 中正确触发浏览器事件

c++ - boost 程序选项计算标志的出现次数

json - 如何在 C++ 中使用 Boost 访问嵌套的 json 数组元素