Я нашел кусок кода и не знаю, работает ли он. Я довольно новичок в C ++, поэтому, пожалуйста, простите меня, если это очевидный вопрос. Используйте это, если оператор инициализатор:
Код: Выделить всё
if (std::lock_guard lock(mutex); condition) {
// do something
}
Код: Выделить всё
{
std::lock_guard lock(mutex);
if (condition) {
// do something
}
}
< /code>
Пример 2 < /h3>
Я также нашел что-то вроде этого: < /p>
if (std::lock_guard(mutex); condition) {
// do something
}
Так что на самом деле этот пример не будет удерживать Оценивается блокировка, когда Code> Code>, а также не удерживает блокировку во время выполнения IF или иначе блоки.
Пример 3
Однако я также нашел этот код: < /p>
Код: Выделить всё
if (std::lock_guard{mutex}, condition) {
// do something
}
Этот код компилируется и запускается. Код> или иначе блокирует, потому что следующее не является мертвой:
Код: Выделить всё
if (std::lock_guard{mutex}, condition) {
std::lock_guard lock(mutex);
// do something
}
< /code>
Вопросы < /h3>
работает ли код в примере 3, как предполагалось? То есть он содержит блокировку во время оценки условий У этого типа If инициализатор есть имя, чтобы я мог прочитать его?
Подробнее здесь: https://stackoverflow.com/questions/794 ... ing-a-lock
Мобильная версия