std::lock_guard — cppreference.com
Материал из cppreference.com
<metanoindex/>
<tbody> </tbody>
| Определено в заголовочном файле |
||
|
|
(начиная с C++11) | |
Класс lock_guard является оберткой над мьютексом, которая обеспечивает удобный механизм (в RAII стиле) владения мьютексом внутри области видимости.
Оригинал:
The class lock_guard is a mutex wrapper that provides a convenient RAII стиле mechanism for owning a mutex for the duration of a scoped block.
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Когда объект lock_guard создается, он пытается захватить мьютекс. Когда поток исполнения покидает область видимости, в которой был создан объект lock_guard, lock_guard разрушается и мьютекс освобождается.
Оригинал:
When a lock_guard object is created, it attempts to take ownership of the mutex it is given. When control leaves the scope in which the lock_guard object was created, the lock_guard is destructed and the mutex is released.
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Класс
lock_guard не является копируемым. Передаваемый тип Mutex должен реализовывать концепт BasicLockable.
Оригинал:
The lock_guard class is non-copyable. The supplied Mutex type shall implement the BasicLockable concept.
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Шаблонные параметры
| Mutex | — | Тип мьютекса для блокировки. Этот тип должен реализовывать концепцию BasicLockable
|
Типы-члены
| Тип члена | Определение |
mutex_type
|
Mutex Оригинал: Mutex Текст был переведён автоматически используя Переводчик Google. |
Функции-члены
строит объект lock_guard, опционально блокирующий данный мьютекс Оригинал: constructs a lock_guard, optionally locking the given mutex Текст был переведён автоматически используя Переводчик Google. (public функция-элемент) [править] | |
разрушает объект lock_guard, освобождает нижележащий мьютекс Оригинал: destructs the lock_guard object, unlocks the underlying mutex Текст был переведён автоматически используя Переводчик Google. (public функция-элемент) [править] | |
| не является копируемым (public функция-элемент) [править] |
Пример
#include <thread> #include <mutex> int g_i = 0; std::mutex g_i_mutex; // защищает g_i void safe_increment() { std::lock_guard<std::mutex> lock(g_i_mutex); ++g_i; // g_i_mutex автоматически освобождается, когда lock // покидает область видимости } int main() { std::thread t1(safe_increment); std::thread t2(safe_increment); t1.join(); t2.join(); }