Semaphores fully implemented

This commit is contained in:
2018-04-15 20:48:22 +02:00
parent 612cfc2035
commit 4652e464b9
3 changed files with 41 additions and 6 deletions

View File

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