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

Метод createLock

Метод createLock класса LockFactory создаёт объект Lock, связанный с определённым ресурсом. Первым параметром передаётся имя ресурса в виде строки, вторым - флаг блокировки (например, Lock::EXCLUSIVE). Полученный объект затем используется для захвата и освобождения блокировки.

Синтаксис

public function createLock(string $resource, bool $shared = false): LockInterface

Пример

Давайте создадим блокировку для ресурса 'article' и захватим её:

<?php namespace AppService; use SymfonyComponentLockLockFactory; class ArticleLock { public function __construct(private LockFactory $lockFactory) { } public function run(): bool { $lock = $this->lockFactory->createLock('article'); if (!$lock->acquire()) { return false; } // critical section $lock->release(); return true; } } ?>

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

true

Пример

Давайте создадим разделяемую блокировку, передав вторым параметром true:

<?php namespace AppService; use SymfonyComponentLockLockFactory; class ArticleLock { public function __construct(private LockFactory $lockFactory) { } public function run(): string { $lock = $this->lockFactory->createLock('user', true); if ($lock->acquire()) { return 'acquired'; } return 'busy'; } } ?>

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

"acquired"

Пример

Давайте создадим блокировку с автоматическим освобождением через параметр $autoRelease и зададим время жизни:

<?php namespace AppService; use SymfonyComponentLockLockFactory; class ArticleLock { public function __construct(private LockFactory $lockFactory) { } public function run(): bool { $lock = $this->lockFactory->createLock( 'article', false, 30.0, true ); return $lock->acquire(); } } ?>

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

true

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

  • класс LockFactory,
    который создаёт объекты блокировок
  • класс Lock,
    который представляет саму блокировку
  • метод acquire,
    который захватывает блокировку
  • метод release,
    который освобождает блокировку
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить