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

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

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

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

16 ответов

14 просмотров

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Зачем 2

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

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

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

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

Мужики и девушки, привет) в Вelphi xe7 в настройках во вкладке "Editor Options" далее " Color" есть список: "Elements", открыв который мы можем настраивать отображение разных...
Kraszx
14
Добрый вечер. Есть вопрос, а может и предложение. Был у меня диалог в другой группе о делфи и я задался вопросом: "А нельзя ли в делфи цвет //коментария и {комментария} сде...
Kraszx
24
Всем привет! Подскажи, пожалуйста, как передать в TComboBox сразу значение и id записи. На Delphi я делал так: ComboBox1.Items.AddObject('Какое-то значение', Pointer(id запис...
Евгений
13
А вот это что за конструкция? Вернее, она тут нафига?
Serjone
10
Мдя, прикол, боевая сборка запускается (именно под отладчиком) после F9 примерно полторы минуты (97 секунд если быть точным). Начал копать - проблема детектится сразу - зависа...
Александр (Rouse_) Багель
38
Мужики. привет) в Вelphi xe7 в настройках во вкладке "Editor Options" далее " Color" есть список: "Elements", открыв который мы можем настраивать отображение разных элементов...
Kraszx
2
Здравствуйте, вопрос по структурам данных. Были у вас случаи, когда пришлось писать деревья или двунаправленные списки?
/ /
50
Товарищи, кто работа с iphelper? Или может я в самой логике ошибки фигачу, не пойму.... var ifTable : PMIB_IFTABLE; size, corSize: DWORD; Buffer ...
Warfarellen
4
я так понимаю, я так подозреваю, что создание такого плагина для человека, кто умеет писать плагины для делфи потребует минут 5-10 времени. но это мое подозрение. хотелось бы ...
Kraszx
7
Всем привет! Кто пользуется DevExpress, подскажите пожалуйста, реализован ли в TcxGrid в новых версиях поиск по датам как в Экселе (ну т.е. не просто список чекбоксов со значе...
A Z
4
Карта сайта