РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
790 of 815 menu

Метод try_lock

Метод try_lock класса unique_lock пытается захватить мьютекс, связанный с объектом блокировки, не блокируя текущий поток. Если мьютекс свободен, метод захватывает его и возвращает true. Если мьютекс уже занят другим потоком, метод не ждет освобождения и сразу возвращает false. Метод не принимает параметров.

Синтаксис

lock.try_lock()

Пример

Давайте создадим объект unique_lock и попробуем захватить мьютекс методом try_lock:

#include <iostream> #include <mutex> using namespace std; int main() { mutex mtx; unique_lock<mutex> lock(mtx, defer_lock); bool res = lock.try_lock(); cout << res << endl; return 0; }

Результат выполнения кода:

1

Пример

Давайте захватим мьютекс дважды: сначала методом try_lock, а затем попробуем захватить его повторно:

#include <iostream> #include <mutex> using namespace std; int main() { mutex mtx; unique_lock<mutex> lock(mtx, defer_lock); bool res1 = lock.try_lock(); bool res2 = lock.try_lock(); cout << res1 << " " << res2 << endl; return 0; }

Результат выполнения кода:

1 0

Смотрите также

  • класс unique_lock,
    который управляет блокировкой мьютекса
  • метод lock,
    который блокирует мьютекс с ожиданием
  • метод unlock,
    который освобождает мьютекс
  • метод try_lock,
    который пытается захватить мьютекс без ожидания
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить