Types
AsyncSemaphore = ref object of RootObj size*: int count: int queue: seq[Future[void]]
- Source Edit
Procs
proc acquire(s: AsyncSemaphore): Future[void] {....raises: [], tags: [RootEffect].}
- Acquire a resource and decrement the resource counter. If no more resources are available, the returned future will not complete until the resource count goes above 0. Source Edit
proc count(s: AsyncSemaphore): int {....raises: [], tags: [].}
- Source Edit
proc forceAcquire(s: AsyncSemaphore) {....raises: [], tags: [].}
- ForceAcquire will always succeed, creating a temporary slot if required. This temporary slot will stay usable until there is less acquires than releases Source Edit
proc newAsyncSemaphore(size: int): AsyncSemaphore {....raises: [], tags: [].}
- Source Edit
proc release(s: AsyncSemaphore) {....raises: [], tags: [RootEffect].}
- Release a resource from the semaphore, by picking the first future from the queue and completing it and incrementing the internal resource count Source Edit
proc tryAcquire(s: AsyncSemaphore): bool {....raises: [], tags: [].}
- Attempts to acquire a resource, if successful returns true, otherwise false Source Edit