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

3
我注意到,MingW和GCC编译器在可用的情况下会使用多个核心。
例如:
for (long i = 0; i < 100000; ++i)
{
    some_complicated_calculation();
}

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

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

编辑

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


4
可能是您的操作系统将该进程分派到不同的核心上。 - timrau
4
http://gcc.gnu.org/wiki/AutoParInGCC - Hans Passant
只是为了明确 - 你是在谈论编译器使用多个核心(即并行编译),还是你的程序使用多个核心(即运行多线程)? - Angew is no longer proud of SO
2个回答

4

只要some_complicated_calculation()函数内部没有创建线程或使用类似于异步(C++11)的操作,就会使用单个核心。

任务管理器上显示的活动与迭代执行文件无关。这可能完全与您正在处理的内容无关。


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接