-
-
Notifications
You must be signed in to change notification settings - Fork 12
Expand file tree
/
Copy pathKeyedSemaphore.php
More file actions
23 lines (21 loc) · 816 Bytes
/
KeyedSemaphore.php
File metadata and controls
23 lines (21 loc) · 816 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php declare(strict_types=1);
namespace Amp\Sync;
/**
* A counting semaphore based on keys.
*
* Objects that implement this interface should guarantee that all operations are atomic. Implementations do not have to
* guarantee that acquiring a lock is first-come, first serve.
*/
interface KeyedSemaphore
{
/**
* Acquires a lock on the semaphore.
*
* @param string $key Lock key
*
* @return Lock Returns an integer keyed lock object once a lock is obtained. Identifiers returned by the
* locks should be 0-indexed. Releasing an identifier MUST make that same identifier available. May fail with
* a SyncException if an error occurs when attempting to obtain the lock (e.g. a shared memory segment closed).
*/
public function acquire(string $key): Lock;
}