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

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

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

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

16 ответов

5 просмотров

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Зачем 2

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

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

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

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

я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
в сях есть множество как в питоне? для удаление дубликатов
.
25
читать файл максимально быстро? странный вопрос))
zamtmn
53
How to create an OS in C? what to study?
.
18
тоесть, указав return eax, сгенерируется никому ненужная инструкция mov eax,eax ?
Aiwan \ (•◡•) / _bot
24
Всем доброго вечера! Хочу поделиться своим злоключением с человеком, который, как оказалось сюда тоже скидывал свое резюме. Жаль, что я вашу группу не нашел раньше… человек ки...
Роман Ахмедзянов
4
Компания Elif ищет менеджера проектов, который будет заниматься поиском и ведением новых проектов. Прежде чем приступить к работе, вам нужно пройти наш недельный курс, где вы ...
Elif
5
Привет, кто может сделать юзербота с апи? Задачи: - создавать группы - создавать каналы - задавать для созданных каналов аватарку или эмоджи, имя группы - добавлять в группы...
Lencore
11
а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Кто может подсказать? Я преобрпзовал изображение в бинарное(у меня установлен трекбар который при установленном значении меняет пиксели на белый если меньше и чёрный если боль...
Константин VS
6
Карта сайта