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

How to force compiler to use one core only?

本文关键字:一个 内核 何强制 编译器      更新时间:2023-10-16

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

例如:

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

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

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

编辑

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

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

您在任务管理器上看到的活动不能与迭代的可执行文件相关。它可能与您正在进行的工作完全无关。

看起来GNU软件无线电中提供的thread_bind_to_processor就是您想要的:http://gnuradio.org/doc/doxygen/namespacegr_1_1thread.html#aab5195edcd94db5c71ecbfef9d578fb7