поток в многоядерный процессор - PullRequest
3 голосов
/ 16 августа 2010

Я написал программу на C, и мне нужно, чтобы только одна функция работала в другом ядре процессора.

Кто-нибудь знает, как распределять потоки по разным ядрам? Может ли один работающий поток, работающий на одном ядре, иногда использовать и другое ядро, в зависимости от того, насколько заняты ядра?

Ответы [ 2 ]

5 голосов
/ 16 августа 2010

Я полагаю, что вы ищете установленную функциональность сродства.

Processor affinity is a modification of the native central queue scheduling 
algorithm in a symmetric multiprocessing operating system. Each task 
(be it process or thread) in the queue has a tag indicating its 
preferred / kin processor. At allocation time, each task is allocated to
its kin processor in preference to others.

Извлеките эту ветку , в которой обсуждается использование настройки привязки к определенной ветке. Выдержки из этой темы:

int sched_setaffinity(pid_t pid,size_t cpusetsize,cpu_set_t *mask);

Passing 0 as the pid, and it'll apply to the current thread only, or have other
thread report their kernel pid with the linux specific call pid_t gettid(void);
and pass that in as the pid.
2 голосов
/ 16 августа 2010

Я думаю, вы спрашиваете, как потоки распределяются для работы на разных процессорах в многопроцессорном процессоре? Если так, то я понимаю, что это то, что контролируется операционной системой. Взгляните на этот ТАК * вопрос .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...