Есть ли способ заблокировать процесс с процессором? - PullRequest
5 голосов
/ 30 марта 2011

Я подумываю о разработке приложения, которое на шестиядерном компьютере будет выполнять шесть асинхронных задач, по одной на каждое ядро.

Но возможно ли привязать задачи к их собственному ядру?

Идея состоит в том, чтобы они работали в основном самостоятельно, но иногда общались через общую область памяти.Однако я хочу, чтобы задачи выполнялись как можно более спокойно.

Ответы [ 4 ]

7 голосов
/ 30 марта 2011

Понятие, которое вы ищете, называется "привязкой нити".Как это реализовано и какие интерфейсы запрашивать это зависит от ОС.

В Linux попробуйте sched_setaffinity () .glibc также может предлагать pthread_attr_setaffinity_np ().

5 голосов
/ 30 марта 2011
taskset -c cpunum yourprocess

делает то, что вы хотите. Вместо этого можно указывать PID, таким образом вы можете установить отдельные потоки на процессор. Если вы хотите изменить привязку процессора к вашей собственной программе, используйте sched_setaffinity().

4 голосов
/ 30 марта 2011

Не блокируется, но можно связать сходство процессора для процесса

0 голосов
/ 30 марта 2011

Только для записей, другой метод, не связанный с программированием: откройте диспетчер задач, перейдите на вкладку «Процессы», щелкните правой кнопкой мыши свой процесс и выберите «Установить сродство» ...

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