是什么PID 0意味着了sched_setaffinity()
问题描述:
我在nginx source看到这样的代码:是什么PID 0意味着了sched_setaffinity()
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()
?
答
从sched_setaffinity(2)
manpage:
亲和力掩模实际上是一种可以 为每个线程组中的线程的独立地调整每线程属性。从调用
gettid(2)
返回的 值可以在参数 pid中传递。 指定pid
为0将设置调用 线程的属性,并将调用返回的值传递给getpid(2)
将 设置线程组主线程的属性。(如果使用POSIX线程API是 ,然后用pthread_setaffinity_np(3)
的sched_setaffinity()
代替 。)
是否会影响孩子的过程,是'fork()的'编辑? – 2011-06-04 02:58:00
@编译风扇是的,它会。通过fork(2)创建的孩子继承父亲的CPU关联掩码。亲和性掩码通过'execve(2)'保存。 – 2011-07-30 15:40:38