如何强制编译器只使用一个核心?

时间:2014-04-29 13:19:39

标签: c++ gcc optimization mingw

我注意到,如果可用,MingW和GCC编译器会使用多个内核。

例如:

for (long i = 0; i < 100000; ++i)
{
    some_complicated_calculation();
}

如果我打开一个任务管理器/系统监视器,我可以看到使用了多个(对我来说:2个)核心。

编译器如何决定哪些代码可以在多个内核上运行? 如何强制编译器只使用一个核心?

修改

我的代码不包含任何多线程代码 我很好奇为什么我的程序(不是编译器)使用多个核心。

2 个答案:

答案 0 :(得分:4)

只要some_complicated_calculation()内部没有任何特殊内容可以创建线程或使用async(C ++ 11)或类似内容,它就会使用单个内核。

您在任务管理器上看到的活动无法与迭代的可执行文件相关联。这可能与你正在做的事情完全无关。

答案 1 :(得分:0)

看起来你在寻找GNU软件无线电中提供的thread_bind_to_processor: http://gnuradio.org/doc/doxygen/namespacegr_1_1thread.html#aab5195edcd94db5c71ecbfef9d578fb7