170 похожих чатов

Вот есть объект класса std::mutex priorityQueryMutex; И есть 2 функции-члена: Внутри одной

происходит: std::lock_guard<std::mutex> guard(priorityQueryMutex);
Внутри другой: priorityQueryMutex.lock();

Может так получится что в то время когда мьютекс будет залочен через lock(), будет вызвана функция порождающая lock_guard. Но, в таком случае она ведь не сможет залочить мьютекс. Получается надо 2 мьютекса для такого дела создавать?

16 ответов

19 просмотров

Разве мютекс не предназначен для того, чтобы выполнение одного кода блокировало выполнение другого?

Почему не сможет залочить мьютекс?

Не надо руками блочить мьютекс

Виктор-Nekrasov Автор вопроса
Tolik Malibroda
Разве мютекс не предназначен для того, чтобы выпол...

В 2 функциях-членах используется общий ресурс. Но когда его лочишь через lock_guard, то блокировка живёт до выхода из зоны видимости. А мне, в одной из функций, нужно чтобы она жила и после окончания работы функции. Поэтому во второй функции я её через lock() реализовываю.

Она сможет залочить мьютекс когда он разлочится в другой функции

Виктор Nekrasov
В 2 функциях-членах используется общий ресурс. Но ...

> А мне, в одной из функций, нужно чтобы она жила и после окончания работы функции. вижу проблемы дизайна я..

Виктор-Nekrasov Автор вопроса
Danya🔥
Она сможет залочить мьютекс когда он разлочится в ...

получается при создании lock_guard и занятости мьютекса он будет ожидать пока мьютекс разлочат?

Виктор-Nekrasov Автор вопроса
Alexander Karaev
> А мне, в одной из функций, нужно чтобы она жила ...

Я, в целом, исключительно за то чтобы нормально код писать, но опыта пока мало. А почему это плохой дизайн?

Виктор Nekrasov
Я, в целом, исключительно за то чтобы нормально ко...

с какой целью необходимо оставить лок после выхода из функции?

Виктор-Nekrasov Автор вопроса
Kirill Bolshakov
Для этого всё равно не надо лочить руками

Как понять не лочить руками? Ну вот у меня функция одна записывает в ресурс, и на время записи лок-гвард создает. Вроде же это не руками

Зачем 2

Виктор-Nekrasov Автор вопроса
Alexander Karaev
с какой целью необходимо оставить лок после выхода...

Мне надо забрать вектор. Пока я его забираю - то лочу. Как заберу - разлочу

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта