{ ... }
открывает новую область действия
В C ++ вы можете использовать их следующим образом:
void function() {
// ...
{
// lock some mutex.
mutex_locker lock(m_mutex);
// ...
}
// ...
}
Как только управление выходит из блока, локатор мьютекса уничтожается. И в своем деструкторе он автоматически разблокирует мьютекс, к которому он подключен. Это очень часто делается и называется RAII (получение ресурсов является инициализацией), а также SBRM (управление ресурсами, ограниченным областью действия). Другим распространенным приложением является выделение памяти, а затем в деструкторе снова освободить эту память.
Другая цель состоит в том, чтобы сделать несколько подобных вещей:
void function() {
// set up timer A
{
int config = get_config(TIMER_A);
// ...
}
// set up timer B
{
int config = get_config(TIMER_B);
// ...
}
}
Это будет держать вещи отдельно, чтобы можно было легко найти различные строительные блоки. Вы можете использовать переменные с одинаковыми именами, как в коде выше, потому что они не видны за пределами своей области видимости, поэтому они не конфликтуют друг с другом.