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

nbr*_*bro 0 c++ cpu process multitasking

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

如何在Mac OS X上发现*logical*核心的数量?

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

我不确定这是否应该在实现,编译或执行级别完成.我见过人们谈论tasksetUbuntu,但我不确定这对我来说是否是正确的工具(可能它甚至不适用于Mac OS X).

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

MSa*_*ers 6

进程是按计划进行的,非计划进程的想法是矛盾的.

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

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

  • @nbro:你建议操作系统供应商提出一个想法,让一个坏主意稍微不那么糟糕.他们为什么要打扰? (2认同)