2010-08-11 13 views
1

Я работаю над проектом на C, который требует потоков, работающих на отдельных процессорах, чем в начальном процессе. Я использую библиотеку pthread для создания этих потоков. Я использую sched_setaffinity для привязки основного процесса к процессору. Могу ли я сделать то же самое для каждого потока, чтобы связывать их с отдельными процессорами?Закрепление памяти ptreads и процессора

Я также фиксирую память основного процесса. Будет ли вызов mlockall (MCL_CURRENT | MCL_FUTURE) перед созданием pthreads выровнять всю память, используемую pthreads, или мне нужно будет вызвать ее снова в каждом pthread?

Заранее спасибо.

ответ

5

На linux у вас есть pthread_attr_setaffinity_np, но поскольку np указывает, что это не переносной aka расширение.

3

Память распределяется между всеми потоками в процессе, поэтому нет смысла называть mlockall более одного раза за процесс.

Кроме того, память используется всеми ЦП в системе. API mlockall запрещает операционной системе записывать страницы памяти процесса на диск и не имеет ничего общего с блокировкой памяти для ЦП.

Смежные вопросы