是什么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); 
    } 

为什么这里pid0而不是getpid()

sched_setaffinity(2) manpage

亲和力掩模实际上是一种可以 为每个线程组中的线程的独立地调整每线程属性。从调用gettid(2)返回的 值可以在参数 pid中传递。 指定pid为0将设置调用 线程的属性,并将调用返回的值传递给getpid(2)将 设置线程组主线程的属性。(如果使用POSIX线程API是 ,然后用pthread_setaffinity_np(3)sched_setaffinity()代替 。)

+0

是否会影响孩子的过程,是'fork()的'编辑? – 2011-06-04 02:58:00

+0

@编译风扇是的,它会。通过fork(2)创建的孩子继承父亲的CPU关联掩码。亲和性掩码通过'execve(2)'保存。 – 2011-07-30 15:40:38