2013-06-15 7 views
0

Я хотел бы использовать pthread_cond_broadcast() для пробуждения всех потоков, ожидающих того же состояния.Параллельное выполнение с pthread_cond_broadcast?

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

Я прав? Или есть способ сделать это?

Заранее благодарен.

+0

Не все может быть преобразовано для параллельной работы. В любой программе стоит упомянуть, что всегда есть части, которые должны выполняться последовательно (скажем, обмениваясь общим ресурсом). Таким образом, мы обычно говорим о частях, которые могут запускаться одновременно, а части - это не могло. Если что-то «ждет того же условия», то, вероятно, это так. – SChepurin

ответ

2

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

+0

Спасибо. Был надеется, что существует некоторая возможность не разделить одну и ту же блокировку на той же переменной условия. – Hei

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