我写了一个C ++程序,在几个algorithm上做了一些基准testing。 其中一些algorithm正在使用其他库进行计算。 这些外部库(我没有控制权)使用multithreading,这使得很难获得一个合适的基准(一些algorithm是单线程的,一些是multithreading的)。
所以在做基准testing的时候,我想限制线程为1.是否有无论如何,我可以在Linux中启动一个程序,并告诉它使用最多1个线程,而不是外部库中的默认值(这等于核心数量)?
我不确定从操作系统的角度来看,你可能会问什么? 下一个线程被请求时返回失败?]。
我会在库文档中搜索,他们可能会提供他们正在使用的线程数的配置值。
或者 ,您可以使用taskset命令执行处理器关联
这不正是你所要求的,但它确保你的程序将运行在给定的CPU(或一组CPU)上。 所以无论产生的线程数是多少,程序最多只能使用一个CPU(或指定的CPU数量),所以有效的并行性将得到控制。
或者x2由@goocreations的评论触发…一种愚弄程序的方法让人相信他们有不同数量的CPU可用,就是在虚拟机(例如VirtualBox )中运行它们,