std::lock_guard
Материал из cppreference.com
![]() |
Эта страница была переведена автоматически с английской версии вики используя Переводчик Google. Перевод может содержать ошибки и странные формулировки. Наведите курсор на текст, чтобы увидеть оригинал. Щёлкните здесь, чтобы увидеть английскую версию этой страницы. (Вы можете помочь в исправлении ошибок и улучшении перевода. Для инструкций перейдите по ссылке.) |
Определено в заголовочном файле <mutex>
|
||
template< class Mutex > class lock_guard; |
(начиная с 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 функция-элемент) | |
operator= [удалено] |
не является копируемым (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(); }