线程绑定CPU,顾名思义,就是建立线程和某个或某些CPU的关联,使得线程只能运行在指定的CPU上。个人认为,这有三个好处:
1.减小L1 L2cache的miss
2.减少线程调度的开销
3.合理分配计算资源给I/O密集型线程和CPU密集型线程。
具体到实现上,不管是线程还是进程,都是通过设置亲和性(affinity)来达到目的。对于进程的情况,一般是使用sched_setaffinity这个函数来实现,网上讲的也比较多,这里主要讲一下线程的情况。
与进程的情况相似,线程亲和性的设置和获取主要通过下面两个函数来实现:
int pthread_setaffinity_np(pthread_t
thread
, size_t
cpusetsize,
const cpu_set_t *
cpuset
);
int pthread_getaffinity_np(pthread_t <