And asynchronous queue implementation.
The AsyncSemaphore
is an asynchronous semaphore implementation that
limits the parallelism on Future
execution.
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(???))
Asynchronous mutable location, that is either empty or contains
a value of type A
.
Asynchronous mutable location, that is either empty or contains
a value of type A
.
It has 2 fundamental atomic operations:
The AsyncVar
is appropriate for building synchronization
primitives and performing simple inter-thread communications.
If it helps, it's similar with a BlockingQueue(capacity = 1)
,
except that it doesn't block any threads, all waiting being
callback-based.
Given its asynchronous, non-blocking nature, it can be used on top of Javascript as well.
Inspired by Control.Concurrent.MVar
from Haskell.
Utilities for macro-hygiene.
Cross-platform equivalent for java.lang.ThreadLocal
,
for specifying thread-local variables.
Cross-platform equivalent for java.lang.ThreadLocal
,
for specifying thread-local variables.
These variables differ from their normal counterparts in that each thread that accesses one (via its ThreadLocal#get or ThreadLocal#set method) has its own, independently initialized copy of the variable.
Extractor of non-fatal Throwable
instances.
Extractor of non-fatal Throwable
instances.
This is an alternative to scala.util.control.NonFatal
that only considers VirtualMachineError
as being non-fatal.
And asynchronous queue implementation.
On
poll
, if there are queued elements, it returns oe immediately, otherwise it returns aFuture