我注意到,如果可用,MingW和GCC编译器会使用多个内核。
例如:
for (long i = 0; i < 100000; ++i)
{
some_complicated_calculation();
}
如果我打开一个任务管理器/系统监视器,我可以看到使用了多个(对我来说: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