@hackage / async

Run IO operations asynchronously and wait for their results

Latest2.2.6

About

Metadata

  • Last updated , by SimonMarlow
  • License BSD-3-Clause
  • Categories Parallelism, Concurrency
  • Maintained by: Simon Marlow <marlowsd@gmail.com>

  • Lottery factor: 2

Links

Installation

Tested Compilers

  1. 9.12.2
  2. 9.10.3
  3. 9.8.4
  4. 9.6.7
  5. 9.4.8
  6. 9.2.8
  7. 9.0.2
  8. 8.10.7
  9. 8.8.4
  10. 8.6.5
  11. 8.4.4
  12. 8.2.2
  13. 8.0.2

Package Flags

Use the -f option with cabal commands to enable flags

    debug-auto-label (off by default)

    Strictly for debugging as it might have a non-negligible overhead. Enabling this flag will auto-label the threads spawned by async. Use it to find where are unlabelled threads spawned in your program (be it your code or dependency code).

    bench (off by default)

Readme

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).