происходит: std::lock_guard<std::mutex> guard(priorityQueryMutex);
Внутри другой: priorityQueryMutex.lock();
Может так получится что в то время когда мьютекс будет залочен через lock(), будет вызвана функция порождающая lock_guard. Но, в таком случае она ведь не сможет залочить мьютекс. Получается надо 2 мьютекса для такого дела создавать?
Разве мютекс не предназначен для того, чтобы выполнение одного кода блокировало выполнение другого?
Почему не сможет залочить мьютекс?
Не надо руками блочить мьютекс
В 2 функциях-членах используется общий ресурс. Но когда его лочишь через lock_guard, то блокировка живёт до выхода из зоны видимости. А мне, в одной из функций, нужно чтобы она жила и после окончания работы функции. Поэтому во второй функции я её через lock() реализовываю.
Она сможет залочить мьютекс когда он разлочится в другой функции
> А мне, в одной из функций, нужно чтобы она жила и после окончания работы функции. вижу проблемы дизайна я..
Для этого всё равно не надо лочить руками
получается при создании lock_guard и занятости мьютекса он будет ожидать пока мьютекс разлочат?
Я, в целом, исключительно за то чтобы нормально код писать, но опыта пока мало. А почему это плохой дизайн?
с какой целью необходимо оставить лок после выхода из функции?
Как понять не лочить руками? Ну вот у меня функция одна записывает в ресурс, и на время записи лок-гвард создает. Вроде же это не руками
Не надо вызывать lock на мьютексе
Зачем 2
Мне надо забрать вектор. Пока я его забираю - то лочу. Как заберу - разлочу
Обсуждают сегодня