如果您编写软件时客户为软件使用的 CPU 内核数量付费,那么在您的 C++ 代码中实现这一目标的最佳方式是什么?到目前为止,我的研究使我能够SetProcessAffinityMask
在 Windows 和sched_setaffinity
POSIX 系统上使用。
user152949
问问题
775 次
2 回答
2
这是一个有趣的问题。我不认为我有完美的解决方案,但由于到目前为止还没有任何回应,让我提出以下建议:
如果您的程序中的主要工作块是由一种类型的线程完成的,那么不要产生超过客户许可允许的工作线程。由于不能将单个线程划分为在多个内核上运行,因此这施加了硬限制。
(我不认为设置进程 CPU 亲和力是可行的方法,因为它可以在运行时轻松更改。由于它不需要对系统进行任何逆向工程或永久性修改,我担心规避这一点不会感觉“糟糕”到足以阻止诚实的客户尝试它。)
于 2013-02-26T02:04:55.657 回答
0
我想你找到了最好的选择。如果您想利用多线程处理器的功能,那么限制线程数不是一个好主意。
于 2013-03-14T15:39:33.170 回答