menu
AsyncSemaphore
import { AsyncSemaphore } from "destack:async";
Asynchronous counting semaphore.
1export class AsyncSemaphore {2 state: Atomic<isize>;3 constructor(permits: usize);4 get availablePermits(): usize;5 acquire(): Task<AsyncSemaphorePermit>;6 tryAcquire(): AsyncSemaphorePermit | undefined;7 acquireMany(count: usize): Task<AsyncSemaphorePermit>;8 tryAcquireMany(count: usize): AsyncSemaphorePermit | undefined;9 release(count?: usize): void;10}Members
state: Atomic<isize>The available permit count.
constructor(permits: usize)Create an async semaphore with
permitsavailable permits.get availablePermits(): usizeReturn the number of immediately available permits.
acquire(): Task<AsyncSemaphorePermit>Acquire one permit by suspending the current task if needed.
tryAcquire(): AsyncSemaphorePermit | undefinedTry to acquire one permit without suspending.
acquireMany(count: usize): Task<AsyncSemaphorePermit>Acquire
countpermits by suspending the current task if needed.tryAcquireMany(count: usize): AsyncSemaphorePermit | undefinedTry to acquire
countpermits without suspending.release(count?: usize): voidRelease
countpermits.