menu

AsyncSemaphore

import { AsyncSemaphore } from "destack:async";

Asynchronous counting semaphore.

language/library/src/async/semaphore.ds:8:46
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 permits available permits.

get availablePermits(): usize

Return the number of immediately available permits.

acquire(): Task<AsyncSemaphorePermit>

Acquire one permit by suspending the current task if needed.

tryAcquire(): AsyncSemaphorePermit | undefined

Try to acquire one permit without suspending.

acquireMany(count: usize): Task<AsyncSemaphorePermit>

Acquire count permits by suspending the current task if needed.

tryAcquireMany(count: usize): AsyncSemaphorePermit | undefined

Try to acquire count permits without suspending.

release(count?: usize): void

Release count permits.