Semaphores fully implemented
This commit is contained in:
@ -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);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user