abstract class Semaphore[F[_]] extends AnyRef
A purely functional semaphore.
A semaphore has a non-negative number of permits available. Acquiring a permit decrements the current number of permits and releasing a permit increases the current number of permits. An acquire that occurs when there are no permits available results in semantic blocking until a permit becomes available.
Blocking acquires are cancelable if the semaphore is created with Semaphore.apply
(and hence, with a Concurrent[F]
instance). Blocking acquires are non-cancelable
if the semaphore is created with Semaphore.async
(and hence, with an Async[F]
instance).
- Source
- Semaphore.scala
- Alphabetic
- By Inheritance
- Semaphore
- AnyRef
- Any
- Hide All
- Show All
- Public
- All
Instance Constructors
- new Semaphore()
Abstract Value Members
-
abstract
def
acquireN(n: Long): F[Unit]
Acquires
n
permits.Acquires
n
permits.The returned effect semantically blocks until all requested permits are available. Note that acquires are statisfied in strict FIFO order, so given
s: Semaphore[F]
with 2 permits available, anacquireN(3)
will always be satisfied before a later call toacquireN(1)
.- n
number of permits to acquire - must be >= 0
-
abstract
def
available: F[Long]
Returns the number of permits currently available.
Returns the number of permits currently available. Always non-negative.
May be out of date the instant after it is retrieved. Use
tryAcquire
ortryAcquireN
if you wish to attempt an acquire, returning immediately if the current count is not high enough to satisfy the request. -
abstract
def
count: F[Long]
Obtains a snapshot of the current count.
Obtains a snapshot of the current count. May be negative.
Like available when permits are available but returns the number of permits callers are waiting for when there are no permits available.
-
abstract
def
releaseN(n: Long): F[Unit]
Releases
n
permits, potentially unblocking up ton
outstanding acquires.Releases
n
permits, potentially unblocking up ton
outstanding acquires.- n
number of permits to release - must be >= 0
-
abstract
def
tryAcquireN(n: Long): F[Boolean]
Acquires
n
permits now and returnstrue
, or returnsfalse
immediately.Acquires
n
permits now and returnstrue
, or returnsfalse
immediately. Error ifn < 0
.- n
number of permits to acquire - must be >= 0
-
abstract
def
withPermit[A](t: F[A]): F[A]
Returns an effect that acquires a permit, runs the supplied effect, and then releases the permit.
Concrete Value Members
-
final
def
!=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
final
def
##(): Int
- Definition Classes
- AnyRef → Any
-
final
def
==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
def
acquire: F[Unit]
Acquires a single permit.
Acquires a single permit. Alias for
acquireN(1)
. -
final
def
asInstanceOf[T0]: T0
- Definition Classes
- Any
-
def
clone(): AnyRef
- Attributes
- protected[java.lang]
- Definition Classes
- AnyRef
- Annotations
- @native() @throws( ... )
-
final
def
eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
def
equals(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
-
def
finalize(): Unit
- Attributes
- protected[java.lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( classOf[java.lang.Throwable] )
-
final
def
getClass(): Class[_]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
-
def
hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
-
def
imapK[G[_]](f: ~>[F, G], g: ~>[G, F]): Semaphore[G]
Modify the context
F
using natural isomorphismf
withg
. -
final
def
isInstanceOf[T0]: Boolean
- Definition Classes
- Any
-
final
def
ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
final
def
notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
-
final
def
notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
-
def
release: F[Unit]
Releases a single permit.
Releases a single permit. Alias for
releaseN(1)
. -
final
def
synchronized[T0](arg0: ⇒ T0): T0
- Definition Classes
- AnyRef
-
def
toString(): String
- Definition Classes
- AnyRef → Any
-
def
tryAcquire: F[Boolean]
Alias for
tryAcquireN(1)
. -
final
def
wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @native() @throws( ... )
This is the API documentation for the cats-effect library.
See the cats.effect package for a quick overview.
Links
Canonical documentation links:
Related Cats links (the core):