Initial Commit

This commit is contained in:
David Stone
2024-11-30 18:24:12 -07:00
commit e8f7955c1c
5432 changed files with 1397750 additions and 0 deletions

View File

@ -0,0 +1,31 @@
<?php
namespace WP_Ultimo\Dependencies\Amp\Sync;
use WP_Ultimo\Dependencies\Amp\Promise;
use function WP_Ultimo\Dependencies\Amp\call;
class SemaphoreMutex implements Mutex
{
/** @var Semaphore */
private $semaphore;
/**
* @param Semaphore $semaphore A semaphore with a single lock.
*/
public function __construct(Semaphore $semaphore)
{
$this->semaphore = $semaphore;
}
/** {@inheritdoc} */
public function acquire() : Promise
{
return call(function () : \Generator {
/** @var \Amp\Sync\Lock $lock */
$lock = (yield $this->semaphore->acquire());
if ($lock->getId() !== 0) {
$lock->release();
throw new \Error("Cannot use a semaphore with more than a single lock");
}
return $lock;
});
}
}