(permits: number): (self: Semaphore) => Effect.Effect<number>
(self: Semaphore, permits: number): Effect.Effect<number>Acquires the specified number of permits and returns the acquired permit count.
When to use
Use when you need manual permit acquisition for a lower-level protocol with explicit acquisition and release control.
Details
The effect waits until enough permits are available.
export const const take: {
(permits: number): (
self: Semaphore
) => Effect.Effect<number>
(
self: Semaphore,
permits: number
): Effect.Effect<number>
}
Acquires the specified number of permits and returns the acquired permit
count.
When to use
Use when you need manual permit acquisition for a lower-level protocol with
explicit acquisition and release control.
Details
The effect waits until enough permits are available.
take: {
(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.take(this: Semaphore, permits: number): Effect.Effect<number>Acquires the specified number of permits and returns the resulting
available permits, suspending the task if they are not yet available.
Concurrent pending take calls are processed in a first-in, first-out manner.
When to use
Use to manually acquire permits for lower-level coordination protocols.
take(permits: numberpermits))