Что означает pid 0 для sched_setaffinity () - PullRequest
2 голосов
/ 04 июня 2011

Я вижу такой код в источнике nginx :

    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()?

1 Ответ

3 голосов
/ 04 июня 2011

Из sched_setaffinity(2) manpage :

Маска сродства на самом деле является атрибутом для каждого потока, который можно настраивать независимо для каждого потока в группе потоков.Значение, возвращаемое при вызове gettid(2), может быть передано в аргументе pid. Указание pid в качестве 0 установит атрибут для вызывающего потока, а передача значения, возвращенного из вызова, в getpid(2) установит атрибут для основного потока группы потоков. (Если вы используете API потоков POSIX, используйте pthread_setaffinity_np(3) вместо sched_setaffinity().)

...