Run IO operations asynchronously and wait for their results

Version on this page:2.0.2
LTS Haskell 22.16:2.2.5
Stackage Nightly 2024-04-12:2.2.5
Latest on Hackage:2.2.5

See all snapshots async appears in

BSD-3-Clause licensed by Simon Marlow
Maintained by Simon Marlow
This version can be pinned in stack with:async-2.0.2@sha256:c1dcafbf58089fd366ad929238954971d00ad8fc3a5305db14ef99d9f0949f06,2676

Module documentation for 2.0.2

This package provides a higher-level interface over threads, in which an Async a is a concurrent thread that will eventually deliver a value of type a. The package provides ways to create Async computations, wait for their results, and cancel them.

Using Async is safer than using threads in two ways:

  • When waiting for a thread to return a result, if the thread dies with an exception then the caller must either re-throw the exception (wait) or handle it (waitCatch); the exception cannot be ignored.

  • The API makes it possible to build a tree of threads that are automatically killed when their parent dies (see withAsync).

Changes in 2.0.2:

  • Add a Monad instance for Concurrently

  • Bump base dependency to allow 4.9

Changes in

  • Add workaround to waitCatch for #14

Changes in

  • Bump base dependencies for GHC 7.8

Changes in

  • Bump base dependency of test suite

Changes in

  • Bump base dependency to allow 4.6

Changes in

  • Bump stm dependency to 2.4

Changes in

  • Safe Haskell support: Control.Concurrent.Async is now Trustworthy

Changes in

  • Added a Functor instance for Async

  • Added asyncBound, asyncOn, asyncWithUnmask, asyncOnWithUnmask, withAsyncBound, withAsyncOn, withAsyncWithUnmask, withAsyncOnWithUnmask.

  • Added mapConcurrently

  • Added Concurrently (with Applicative and Alternative instances)