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

std::recursive_mutex::try_lock

Материал из cppreference.com
 
 
Библиотека поддержки конкуренции
Ветви
(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)
 
std::recursive_mutex
Функции-члены
Блокировка
Оригинал:
Locking
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
recursive_mutex::try_lock
Родные ручки
Оригинал:
Native handle
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
 
bool try_lock();
(начиная с C++11)

Пытается заблокировать мьютекс. Возврат происходит немедленно. В случае успешной установки блокировки возвращается true, в противном случае возвращается false.

Содержание

[править] Параметры

(нет)

[править] Возвращаемое значение

true, если блокировка была установлена, в противном случае - false.

[править] Исключения

[править] Пример

Этот пример демонстрирует использование lock, try_lock и unlock

#include <iostream>
#include <mutex>
 
int main()
{
    std::mutex test;
    if (test.try_lock()==true)
        std::cout << "блокировка установлена" << std::endl;
    else
        std::cout << "блокировка не установлена" << std::endl;
    test.unlock();	//теперь разблокируем мьютекс
    test.lock();	//заблокируем его снова
    if (test.try_lock())  //true можно опустить
        std::cout << "блокировка установлена" << std::endl;
    else
        std::cout << "блокировка не установлена" << std::endl;
    test.lock(); //и последнее (заблокируем)
}

Вывод:

блокировка установлена
блокировка не установлена
(программа аварийно завершается)

[править] См. также

блокирует мьютекс, блокируется, если мьютекс недоступен
(public функция-элемент) [править]
разблокирует мьютекс
(public функция-элемент) [править]