Информация об изменениях

Сообщение Re[6]: std::condition_variable счетчик notify от 17.06.2015 9:20

Изменено 17.06.2015 9:25 uzhas

Здравствуйте, Selavi, Вы писали:

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


конечно, вам нужно отпускать мьютекс как можно быстрее. тогда нотификация будет пролетать быстро
длинные задачи делайте без участия этого мьютекса (отпустите его)
только когда вы закончите делать задачу вам надо будет уменьшить счетчик — делайте это аккуратно, т.к.
1) менять счетчик надо под мьютексом
2) если счетчик после уменьшения все еще положительный, то надо запустить следующую задачу без ожидания на cv
3) если счетчик нулевой, то, не отпуская мьютекс, надо уйти в cv.wait(mutex) =)
успехов
Re[6]: std::condition_variable счетчик notify
Здравствуйте, Selavi, Вы писали:

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


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

успехов