在工作中,我们可能遇到这样的需求:如何评估程序在一核和多核下的工作效率差距?最简单的想法是找一台只有一个CPU逻辑核的机器和一台有多个逻辑核的机器。...找到的机器不能保证其他配置一致,比如CPU主频。
找的的机器不能保证环境一致,比如操作系统或者运行中的其他程序。
于是比较好的方式是:在一台多逻辑核的机器上指定程序可以运行在哪些核上。...为了可以证明我们程序在多个核心上切换,我编写了如下代码
// build script:gcc -lpthread bind_core.c -o bind_core
#include ...上图可以看出,程序分别在:0,1,2,3,7,8,10,12,13,14,15,17,19,21号逻辑核上运行过。为了让CPU在固定的核心上执行,我们可以使用taskset指令,让程序绑定逻辑核心。...过了3秒后,通过两个全局变量的值表达出不同场景的处理能力:
不设置CPU绑定 .