(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 const release: {
(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.
release: {
(permits: numberpermits: number): (self: Semaphore(parameter) self: {
resize: (this: Semaphore, permits: number) => Effect.Effect<void>;
withPermits: (this: Semaphore, permits: number) => <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>;
withPermit: <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>;
withPermitsIfAvailable: (this: Semaphore, permits: number) => <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<Option.Option<A>, E, R>;
take: (this: Semaphore, permits: number) => Effect.Effect<number>;
release: (this: Semaphore, permits: number) => Effect.Effect<number>;
releaseAll: Effect.Effect<number>;
}
self: Semaphore) => import EffectEffect.type Effect.Effect = /*unresolved*/ anyEffect<number>
(self: Semaphore(parameter) self: {
resize: (this: Semaphore, permits: number) => Effect.Effect<void>;
withPermits: (this: Semaphore, permits: number) => <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>;
withPermit: <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>;
withPermitsIfAvailable: (this: Semaphore, permits: number) => <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<Option.Option<A>, E, R>;
take: (this: Semaphore, permits: number) => Effect.Effect<number>;
release: (this: Semaphore, permits: number) => Effect.Effect<number>;
releaseAll: Effect.Effect<number>;
}
self: Semaphore, permits: numberpermits: number): import EffectEffect.type Effect.Effect = /*unresolved*/ anyEffect<number>
} = import dualdual(2, (self: Semaphore(parameter) self: {
resize: (this: Semaphore, permits: number) => Effect.Effect<void>;
withPermits: (this: Semaphore, permits: number) => <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>;
withPermit: <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>;
withPermitsIfAvailable: (this: Semaphore, permits: number) => <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<Option.Option<A>, E, R>;
take: (this: Semaphore, permits: number) => Effect.Effect<number>;
release: (this: Semaphore, permits: number) => Effect.Effect<number>;
releaseAll: Effect.Effect<number>;
}
self: Semaphore, permits: numberpermits: number) => self: Semaphore(parameter) self: {
resize: (this: Semaphore, permits: number) => Effect.Effect<void>;
withPermits: (this: Semaphore, permits: number) => <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>;
withPermit: <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<A, E, R>;
withPermitsIfAvailable: (this: Semaphore, permits: number) => <A, E, R>(self: Effect.Effect<A, E, R>) => Effect.Effect<Option.Option<A>, E, R>;
take: (this: Semaphore, permits: number) => Effect.Effect<number>;
release: (this: Semaphore, permits: number) => Effect.Effect<number>;
releaseAll: Effect.Effect<number>;
}
self.Semaphore.release(this: Semaphore, permits: number): Effect.Effect<number>Releases the specified number of permits and returns the resulting
available permits.
When to use
Use to manually return permits acquired by a lower-level coordination
protocol.
release(permits: numberpermits))