我编写了一个C ++程序,对几种算法进行了一些基准测试。其中一些算法使用其他库进行计算。这些外部库(我无法控制)使用多线程,这使得很难获得适当的基准测试(一些算法是单线程的,一些是多线程的)。
因此,在进行基准测试时,我想将线程限制为1.无论如何,我可以在Linux中启动程序并告诉它使用最多1个线程,而不是外部库中的默认值(这是等于核心数量?)
答案 0 :(得分:2)
我不确定从操作系统的角度来看你的问题是什么?操作系统可以做什么?请求下一个线程时返回失败?]。
我在库文档中搜索,他们可能会提供他们正在使用的线程数的配置值。
另外,您可以使用processor affinity
taskset command VirtualBox这不完全是您所要求的,但它确保您的程序将在给定的CPU(或一组CPU)上运行。因此,无论产生的线程数量如何,程序将在任何时候使用最多一个CPU(或指定的CPU数量),因此将控制有效的并行性。
另外x2 由@goocreations的评论触发......愚弄程序让人相信他们拥有不同数量的可用CPU的一种方法是在虚拟机中运行它们(例如{{ 3}})