close
Пространства имён
Варианты
Действия

std::lock_guard

Материал из cppreference.com

<metanoindex/>

 
 
Библиотека поддержки конкуренции
Ветви
(C++11)
(C++20)
(C++20)
Пространство имён this_thread
(C++11)
(C++11)
(C++11)
Атомарные типы
(C++11)
(C++20)
Инициализация атомарных типов
(C++11)(устарело в C++20)
(C++11)(устарело в C++20)
(C++11)(устарело в C++20)
Функции освобождения для атомарных операций
Функции освобождения для атомарных флагов
Упорядочивание памяти
Взаимное исключение
(C++11)
Общее управление блокировкой
(C++11)
(C++11)
(C++11)
(C++11)(C++11)(C++11)
(C++11)
(C++11)
Условные переменные
(C++11)
Семафоры
Защёлки и барьеры
(C++20)
(C++20)
Фьючерсы
(C++11)
(C++11)
(C++11)
(C++11)
 
 
<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();
}