Что происходит, когда pthreads ждут в mutex_lock / cond_wait?

У меня есть программа, которая должна максимально использовать возможности моего процессора.

Он многопоточен через pthreads, которые хорошо выполняют свою работу, за исключением того факта, что они «только» нагружают мои ядра примерно до 60%, чего, на мой взгляд, недостаточно.

Я ищу причину и спрашиваю я (и настоящим вы), если блокирующие функции mutex_lock / cond_wait являются кандидатами?

Что происходит, когда поток не может работать в такой функции?

  • Переключается ли pthread на другой поток, который он обрабатывает, или
  • поток передать свое время системе, и в последнем случае могу я изменить это поведение?

С уважением,

Никто

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

6
задан Nobody 12 July 2011 в 21:24
поделиться