我一直在阅读有关如何检查我的机器有多少个 CPU 或内核的信息(MacBook OS X、Sierra、v.10.12、2GHz Intel Core i7),但是有很多不同的答案,例如:
我需要的是确保我的 C++ 程序只运行 1 个 CPU(并且,如果可能,只在一个内核上运行,即没有调度,即我的程序应该有一个专用内核运行 = > 我不确定我的 Mac OS X 架构实际上是如何组织的)。
我不确定这是否应该在实现、编译或执行级别完成。我看到有人在谈论 Ubuntu 的 taskset
,但我不确定这是否适合我(也许它甚至不存在用于 Mac OS X)。
注意:如果您觉得这个问题应该在另一个 Stack Exchange 的网站上提出,请告诉我,我会把它移到那里。实际上我希望我的解决方案是跨平台的,所以也许这不是问这个问题的最佳场所。
最佳答案
流程是有计划的,非计划流程的想法是矛盾的。
也就是说,将自己限制在一个 CPU 上几乎是 C++ 中的默认设置。 main
从一个线程开始,除非您创建额外的线程,否则就是这样。
您提到您想要一个“专用”核心。有将线程固定到核心的想法,实现了这一点,但您可以弄清楚如果两个程序将自己固定到同一个核心会发生什么。当两个程序共享固定的核心时,另一个核心可能完全未使用。这更像是 super 计算机的一个功能,其中内核对内存的访问权限不统一,您应该匹配 CPU 内核和内存分配。
关于c++ - 如何只在一个 CPU 上运行 C++ 程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40192158/