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