
SwooleLock::trylock은 블록킹 메서드가 아닙니다. 즉, 락을 얻을 때까지 기다리지 않고 즉시 반환됩니다.
SwooleLock::trylock을 사용하여 락을 얻을 때, 다른 스레드에서 락을 얻을 수 있습니다.
락을 해제하는 로직을 추가하는 것이 좋습니다. 만약 프로그램이 종료되면 락이 해제되지 않으면 다음에 프로그램을 실행할 때 락이 이미 해제된 상태로 시작되어 예상치 못한 결과가 발생할 수 있습니다.
락을 해제하는 로직을 추가하는 예제는 다음과 같습니다.
php
$lock = new SwooleLock($fd);
try {
if ($lock->trylock()) {
// 락을 얻은 후의 로직
} else {
// 락을 얻을 수 없을 때의 로직
}
} finally {
$lock->unlock();
}
위의 예제에서 finally 블록은 프로그램이 종료되거나 예외가 발생하더라도 항상 실행됩니다. 따라서 락을 항상 해제할 수 있습니다.
또한, 프로그램이 종료되기 전에 락을 해제하는 로직을 추가하는 것이 좋습니다. 예를 들어, 프로그램이 종료되기 전에 락을 해제하는 함수를 호출하는 것이 좋습니다.
php
function shutdown() {
$lock = new SwooleLock($fd);
$lock->unlock();
}
register_shutdown_function('shutdown');
위의 예제에서 register_shutdown_function 함수는 프로그램이 종료되기 전에 shutdown 함수를 호출합니다. 따라서 프로그램이 종료되기 전에 락을 항상 해제할 수 있습니다.
2025-08-10 00:54