php-ipc/src/Sem/Semaphore.php

32 lines
594 B
PHP

<?php
namespace NoccyLabs\Ipc\Sem;
use NoccyLabs\Ipc\Key\KeyInterface;
class Semaphore
{
protected $resource;
public function __construct(KeyInterface $key, int $max, $perm = 0660, $autorelease = 1)
{
$this->resource = sem_get($key->getKey(), $max, $perm, $autorelease);
}
public function destroy()
{
sem_remove($this->resource);
}
public function acquire(float $timeout = 0):bool
{
return sem_acquire($this->resource, true);
}
public function release():bool
{
return sem_release($this->resource);
}
}