我在nginx source中看到了这样的代码:
if (sched_setaffinity(0, 32, (cpu_set_t *) &cpu_affinity) == -1) {
ngx_log_error(NGX_LOG_ALERT, cycle->log, ngx_errno,
"sched_setaffinity(0x%08Xl) failed", cpu_affinity);
}
为什么pid
0
代替getpid()
?
答案 0 :(得分:3)
来自sched_setaffinity(2)
manpage:
亲和力掩码实际上是可以的每线程属性 针对线程组中的每个线程独立调整。该 可以在参数中传递从
gettid(2)
调用返回的值 PID。 将pid
指定为0将设置调用的属性 线程,并将调用返回的值传递给getpid(2)
设置线程组主线程的属性。(如果你是 使用POSIX线程API,然后使用pthread_setaffinity_np(3)
代替sched_setaffinity()
。)