Hyperlinkv0.8.0-beta.28

Semaphore

Semaphore.releaseconsteffect/Semaphore.ts:497
(permits: number): (self: Semaphore) => Effect.Effect<number>
(self: Semaphore, permits: number): Effect.Effect<number>

Releases the specified number of permits and returns the resulting available permits.

When to use

Use when you need to return permits acquired with take in a lower-level permit protocol with explicit release control.

Details

Running the effect releases the requested permits, wakes waiting acquirers when permits become available, and returns the current available permit count.

Gotchas

Manual take / release usage must keep permit counts balanced. Prefer withPermit or withPermits when the acquisition can be scoped to one effect.

export const release: {
  (permits: number): (self: Semaphore) => Effect.Effect<number>
  (self: Semaphore, permits: number): Effect.Effect<number>
} = dual(2, (self: Semaphore, permits: number) => self.release(permits))