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

Метод release класса Lock

Метод release класса Lock снимает блокировку, установленную ранее методом acquire. После вызова блокировка становится свободной, и её может захватить другой процесс. Если блокировка не была установлена, метод просто ничего не делает.

Синтаксис

public function release(): void

Пример

Давайте создадим блокировку через фабрику и снимем её методом release:

<?php namespace AppService; use SymfonyComponentLockLockFactory; class LockService { public function __construct( private LockFactory $lockFactory, ) { } public function run(): void { $lock = $this->lockFactory->createLock('report'); $lock->acquire(); echo $lock->isAcquired() ? "acquired" : "not acquired"; $lock->release(); echo $lock->isAcquired() ? "acquired" : "not acquired"; } } ?>

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

"acquirednot acquired"

Пример

Давайте снимем блокировку и попробуем захватить её повторно в том же процессе:

<?php namespace AppService; use SymfonyComponentLockLockFactory; class LockService { public function __construct( private LockFactory $lockFactory, ) { } public function run(): void { $lock = $this->lockFactory->createLock('report'); $lock->acquire(); $lock->release(); $res = $lock->acquire(); echo $res ? "acquired again" : "not acquired"; $lock->release(); } } ?>

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

"acquired again"

Пример

Давайте вызовем release у блокировки, которая не была захвачена:

<?php namespace AppService; use SymfonyComponentLockLockFactory; class LockService { public function __construct( private LockFactory $lockFactory, ) { } public function run(): void { $lock = $this->lockFactory->createLock('report'); $lock->release(); $res = $lock->isAcquired(); echo $res ? "acquired" : "not acquired"; } } ?>

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

"not acquired"

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

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