◐ Shell
clean mode source ↗

std::lock_guard — cppreference.com

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

<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 функция-элемент) [править]
не является копируемым
(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();
}