Class/Object

monix.execution

AsyncSemaphore

Related Docs: object AsyncSemaphore | package execution

Permalink

final class AsyncSemaphore extends GenericSemaphore[Cancelable]

The AsyncSemaphore is an asynchronous semaphore implementation that limits the parallelism on Future execution.

The following example instantiates a semaphore with a maximum parallelism of 10:

val semaphore = AsyncSemaphore(maxParallelism = 10)

def makeRequest(r: HttpRequest): Future[HttpResponse] = ???

// For such a task no more than 10 requests
// are allowed to be executed in parallel.
val future = semaphore.greenLight(() => makeRequest(???))
Linear Supertypes
GenericSemaphore[Cancelable], Serializable, Serializable, AnyRef, Any
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. AsyncSemaphore
  2. GenericSemaphore
  3. Serializable
  4. Serializable
  5. AnyRef
  6. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Value Members

  1. final def !=(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  2. final def ##(): Int

    Permalink
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  4. def acquire(): CancelableFuture[Unit]

    Permalink

    Acquires a single permit.

    Acquires a single permit. Alias for acquireN(1).

    Annotations
    @UnsafeBecauseImpure()
    See also

    acquireN for a version that can acquire multiple permits

    withPermit, the preferred way to acquire and release

  5. def acquireN(n: Long): CancelableFuture[Unit]

    Permalink

    Acquires n permits.

    Acquires n permits.

    The returned effect semantically blocks until all requested permits are available. Note that acquires are satisfied in strict FIFO order, so given an AsyncSemaphore with 2 permits available, an acquireN(3) will always be satisfied before a later call to acquireN(1).

    n

    number of permits to acquire - must be >= 0

    returns

    a future that will complete when the acquisition has succeeded or that can be cancelled, removing the listener from the queue (to prevent memory leaks in race conditions)

    Annotations
    @UnsafeBecauseImpure()
    See also

    acquire for a version acquires a single permit

    withPermit, the preferred way to acquire and release

  6. final def asInstanceOf[T0]: T0

    Permalink
    Definition Classes
    Any
  7. def available(): Long

    Permalink

    Returns the number of permits currently available.

    Returns the number of permits currently available. Always non-negative.

    The protocol is unsafe, the semaphore is used in concurrent settings and thus the value returned isn't stable or reliable. Use with care.

    Annotations
    @UnsafeProtocol() @UnsafeBecauseImpure()
  8. def awaitAvailable(n: Long): CancelableFuture[Unit]

    Permalink

    Returns a future that will be complete when the specified number of permits are available.

    Returns a future that will be complete when the specified number of permits are available.

    The protocol is unsafe because by the time the returned future completes, some other process might have already acquired the available permits and thus usage of awaitAvailable can lead to fragile concurrent logic. Use with care.

    Can be useful for termination logic, for example to execute a piece of logic once all available permits have been released.

    n

    is the number of permits waited on

    Annotations
    @UnsafeProtocol() @UnsafeBecauseImpure()
  9. def clone(): AnyRef

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  10. def count(): Long

    Permalink

    Obtains a snapshot of the current count.

    Obtains a snapshot of the current count. Can be negative.

    Like available when permits are available but returns the number of permits callers are waiting for when there are no permits available.

    Annotations
    @UnsafeProtocol() @UnsafeBecauseImpure()
  11. def emptyCancelable: Cancelable

    Permalink
    Attributes
    protected
    Definition Classes
    AsyncSemaphore → GenericSemaphore
  12. final def eq(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  13. def equals(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  14. def finalize(): Unit

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  15. final def getClass(): Class[_]

    Permalink
    Definition Classes
    AnyRef → Any
  16. def hashCode(): Int

    Permalink
    Definition Classes
    AnyRef → Any
  17. final def isInstanceOf[T0]: Boolean

    Permalink
    Definition Classes
    Any
  18. def makeCancelable(f: (Listener[Unit]) ⇒ Unit, p: Listener[Unit]): Cancelable

    Permalink
    Attributes
    protected
    Definition Classes
    AsyncSemaphore → GenericSemaphore
  19. final def ne(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  20. final def notify(): Unit

    Permalink
    Definition Classes
    AnyRef
  21. final def notifyAll(): Unit

    Permalink
    Definition Classes
    AnyRef
  22. def release(): Unit

    Permalink

    Releases a permit, returning it to the pool.

    Releases a permit, returning it to the pool.

    If there are consumers waiting on permits being available, then the first in the queue will be selected and given a permit immediately.

    Annotations
    @UnsafeBecauseImpure()
    See also

    withPermit, the preferred way to acquire and release

  23. def releaseN(n: Long): Unit

    Permalink

    Releases n permits, potentially unblocking up to n outstanding acquires.

    Releases n permits, potentially unblocking up to n outstanding acquires.

    n

    number of permits to release - must be >= 0

    Annotations
    @UnsafeBecauseImpure()
    See also

    withPermit, the preferred way to acquire and release

  24. final def synchronized[T0](arg0: ⇒ T0): T0

    Permalink
    Definition Classes
    AnyRef
  25. def toString(): String

    Permalink
    Definition Classes
    AnyRef → Any
  26. def tryAcquire(): Boolean

    Permalink

    Alias for tryAcquireN(1).

    Alias for tryAcquireN(1).

    The protocol is unsafe, because with the "try*" methods the user needs a firm grasp of what race conditions are and how they manifest and usage of such methods can lead to very fragile logic.

    Annotations
    @UnsafeProtocol() @UnsafeBecauseImpure()
    See also

    withPermit the preferred way to acquire and release

    acquire for the version that can wait for acquisition

    tryAcquireN for the version that can acquire multiple permits

  27. def tryAcquireN(n: Long): Boolean

    Permalink

    Acquires n permits now and returns true, or returns false immediately.

    Acquires n permits now and returns true, or returns false immediately. Error if n < 0.

    The protocol is unsafe, because with the "try*" methods the user needs a firm grasp of what race conditions are and how they manifest and usage of such methods can lead to very fragile logic.

    n

    number of permits to acquire - must be >= 0

    Annotations
    @UnsafeProtocol() @UnsafeBecauseImpure()
    See also

    withPermit, the preferred way to acquire and release

    acquireN for the version that can wait for acquisition

    tryAcquire for the alias that acquires a single permit

  28. final def unsafeAcquireN(n: Long, await: Listener[Unit]): Cancelable

    Permalink
    Attributes
    protected
    Definition Classes
    GenericSemaphore
    Annotations
    @tailrec()
  29. final def unsafeAsyncAcquireN(n: Long, await: Listener[Unit]): Cancelable

    Permalink
    Attributes
    protected
    Definition Classes
    GenericSemaphore
    Annotations
    @tailrec()
  30. final def unsafeAvailable(): Long

    Permalink
    Attributes
    protected
    Definition Classes
    GenericSemaphore
  31. final def unsafeAwaitAvailable(n: Long, await: Listener[Unit]): Cancelable

    Permalink
    Attributes
    protected
    Definition Classes
    GenericSemaphore
    Annotations
    @tailrec()
  32. final def unsafeCount(): Long

    Permalink
    Attributes
    protected
    Definition Classes
    GenericSemaphore
  33. final def unsafeReleaseN(n: Long): Unit

    Permalink
    Attributes
    protected
    Definition Classes
    GenericSemaphore
    Annotations
    @tailrec()
  34. final def unsafeTryAcquireN(n: Long): Boolean

    Permalink
    Attributes
    protected
    Definition Classes
    GenericSemaphore
    Annotations
    @tailrec()
  35. final def wait(): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  36. final def wait(arg0: Long, arg1: Int): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  37. final def wait(arg0: Long): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  38. def withPermit[A](f: () ⇒ Future[A]): CancelableFuture[A]

    Permalink

    Returns a new future, ensuring that the given source acquires an available permit from the semaphore before it is executed.

    Returns a new future, ensuring that the given source acquires an available permit from the semaphore before it is executed.

    The returned future also takes care of resource handling, releasing its permit after being complete.

    f

    is a function returning the Future instance we want to evaluate after we get the permit from the semaphore

    Annotations
    @UnsafeBecauseImpure()
  39. def withPermitN[A](n: Long)(f: () ⇒ Future[A]): CancelableFuture[A]

    Permalink

    Returns a new future, ensuring that the given source acquires n available permits from the semaphore before it is executed.

    Returns a new future, ensuring that the given source acquires n available permits from the semaphore before it is executed.

    The returned future also takes care of resource handling, releasing its permits after being complete.

    n

    is the number of permits required for the given function to be executed

    f

    is a function returning the Future instance we want to evaluate after we get the permit from the semaphore

    Annotations
    @UnsafeBecauseImpure()

Inherited from GenericSemaphore[Cancelable]

Inherited from Serializable

Inherited from Serializable

Inherited from AnyRef

Inherited from Any

Ungrouped