如何只在一个CPU上运行C ++程序?

时间:2016-10-22 12:09:02

标签: c++ process cpu multitasking

我一直在阅读有关如何检查我的机器有多少CPU或内核(MacBook OS X,Sierra,v.10.12,2GHz Intel Core i7),但有许多不同的答案,例如:< / p>

  

How to discover number of *logical* cores on Mac OS X?

我需要的是确保我的C ++程序只运行一个CPU(如果可能的话,只运行一个核心,即没有调度,即我的程序应该有一个专用的核心来运行= &gt;我不确定我的Mac OS X架构是如何组织的。)

我不确定这是否应该在实现,编译或执行级别完成。我见过有人在谈论Ubuntu的taskset,但我不确定这对我来说是否是正确的工具(对Mac OS X来说甚至不存在)。

注意:如果您觉得应该在另一个Stack Exchange网站上询问此问题,请告诉我,我会将其移至那里。实际上我希望我的解决方案是跨平台的,所以也许这不是提出这个问题的最好地方。

1 个答案:

答案 0 :(得分:6)

计划流程,非计划流程的想法是矛盾的。

也就是说,限制自己使用一个CPU几乎是C ++中的默认设置。 main从一个线程开始,除非你创建了所有你得到的其他线程。

你提到你需要一个“专用”核心。有一个想法是将一个线程固定到一个核心,这有点实现了,但你可以弄清楚如果两个程序将自己固定到同一个核心会发生什么。另外一个核心可能完全未使用,而两个程序共享该核心核心。对于超级计算机而言,这更像是一项功能,其中内核无法统一访问内存,您应该匹配CPU内核和内存分配。