Re[6]: std::condition_variable счетчик notify
От: uzhas Ниоткуда  
Дата: 17.06.15 09:20
Оценка: +2
Здравствуйте, Selavi, Вы писали:

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


конечно, вам нужно отпускать мьютекс как можно быстрее. тогда нотификация будет пролетать быстро
длинные задачи делайте без участия этого мьютекса (отпустите его)
только когда вы закончите делать задачу вам надо будет уменьшить счетчик — делайте это аккуратно, т.к.
1) менять счетчик надо под мьютексом
2) если счетчик после уменьшения все еще положительный, то надо запустить следующую задачу без ожидания на cv
3) если счетчик нулевой, то, не отпуская мьютекс, надо уйти в cv.wait(mutex) =). отпустить, конечно, можно, но потом надо где-то снова его залочить, проверить счетчик и, если тот нулевой, уйти в cv.wait(mutex); иначе приступить к след. задаче

успехов
Отредактировано 17.06.2015 9:25 uzhas . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.