supervisors alternatives and similar packages
Based on the "Concurrency" category.
Alternatively, view supervisors alternatives based on common mentions on social networks and blogs.
-
haxl
A Haskell library that simplifies access to remote data, such as databases or web-based services. -
streamly
High performance, concurrent functional programming abstractions -
chaselev-deque
A collection of different packages for CAS based data structures. -
unagi-chan
A haskell library implementing fast and scalable concurrent queues for x86, with a Chan-like API -
lifted-async
Run lifted IO operations asynchronously and wait for their results -
cspmchecker
The library FDR3 uses for parsing, type checking and evaluating machine CSP. -
libcspm
The library FDR3 uses for parsing, type checking and evaluating machine CSP. -
speculation
Safe, programmable, speculative evaluation for Haskell -
threads-supervisor
Simple, IO-based Haskell library for Erlang-inspired thread supervisors -
concurrent-machines
Concurrency features for the Haskell machines package -
concurrent-supply
A fast globally unique variable supply with a pure API -
slave-thread
A principal solution to ghost threads and silent exceptions -
sirkel
Sirkel; a Chord DHT in haskell. Node failure, replication and batteries included! -
thread-supervisor
A simplified implementation of Erlang/OTP like supervisor for GHC thread -
unagi-bloomfilter
A fast, cache-efficient, concurrent bloom filter in Haskell -
token-bucket
Haskell rate limiter library using lazy token bucket algorithm -
timers
Simple package that implements timers. Both "one-shot" and "repeating" timers are implemented. -
split-channel
Control.Concurrent.Chan split into sending and receiving halves. -
concurrent-hashtable
A thread-safe hash table in Haskell
Collect and Analyze Billions of Data Points in Real Time
Do you think we are missing an alternative of supervisors or a related project?
README
Haskell Supervisors
The supervisors
package provides a useful abstraction for managing the
groups of Haskell threads, which may not have a strictly hierarchical
structure to their lifetimes.
One way to think of it is that supervisors
is to async as
resourcet is to bracket.
Most of the time you can manage these things in a hierarchical manner: for bracket, acquire a resource, do stuff with it, and release it. For async, spawn some tasks, wait for some or all of them, maybe kill the remaining ones, and return. The memory used by all of these threads is not reclaimed until the entire subtree finishes.
But sometimes, your concurrency patterns don't fit neatly into a tree; that is what this package is for.
This package was originally written for use in the rpc layer of the capnp package, where the various threads handling rpc calls can have essentially arbitrary lifetimes, but we often want to make sure they are all shut down when a connection is closed.
Concretely, the library provides a Supervisor
construct, which can be
used to safely spawn threads while guaranteeing that:
- When the supervisor is killed, all of the threads it supervises will be killed.
- Child threads can terminate in any order, and memory usage will always be proportional to the number of live supervised threads.