Run IO operations asynchronously and wait for their results

Version on this page:2.0.2
LTS Haskell 8.12:
Stackage Nightly 2017-05-01:
Latest on Hackage:
BSD3 licensed by Simon Marlow
Maintained by Simon Marlow

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

  • Make 'cancelWith' wait for the cancelled thread to terminate, like 'cancel'
  • Updates to dependency bounds for GHC 8.2

Changes in 2.1.1:

  • Add concurrently_
  • Add replicateConcurrently
  • Add replicateConcurrently_
  • Fix incorrect argument order in forConcurrently_
  • Generalize mapConcurrently_ and forConcurrently_ to Foldable
  • withAsync now reliably kills the thread, by using an uninterruptible cancel
  • Make cancel wait for the thread to finish, and adjust 'concurrently' to match

Changes in 2.1.0:

  • Bump base dependency to allow 4.10
  • Remove invalid Monad instance for Concurrently
  • Add Monoid and Semigroup instances for Concurrently
  • Add forConcurrently (flipped version of mapConcurrently)
  • Add STM version of all applicable IO functions: waitAnySTM, waitAnyCatchSTM, waitEitherSTM, waitEitherCatchSTM, waitEitherSTM_, and waitBothSTM.

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)
Depends on:
Used by 246 packages:
Concurrential, CurryDB, EtaMOO, GPipe-GLFW, LambdaHack, OnRmt, aivika-realtime, alarmclock, ariadne, ascii-progress, async-ajax, async-extra, async-extras, async-io-either, async-manager, async-pool, aws-performance-tests, azure-servicebus, b9, bibdb, biohazard, bond, borel, buchhaltung, buildwrapper, cabal-install, cassy, cgrep, classy-prelude, codecov-haskell, concurrent-dns-cache, concurrent-machines, concurrent-output, conduit-extra, courier, cql-io, cqrs-example, craft, craze, cryptol, d-bus, danibot, darcs, diplomacy-server, djinn-ghc, doi, dustme, engine-io, extract-dependencies, fast-tags, feed-gipeda, ficketed, file-modules, fraxl, fsnotify, gelatin, giak, ginsu, git-annex, git-repair, glirc, glue, glue-example, gore-and-ash-async, hackage-diff, hackage-server, hackport, halma-gui, halvm-web, hapistrano, haskell-tor, haskoin-node, hats, haxl-amazonka, haxl-facebook, hcoap, hedgehog, hedis, hinotify, hinterface, hipchat-hs, hledger-ui, hpc-coveralls, hpio, hs-watchman, hsbencher, hsdev, hsnsq, hspec-core, hspec-meta, http-proxy, http-reverse-proxy, hydra-print, ide-backend, ide-backend-common, ide-backend-server, idris, inspection-proxy, introduction, io-memoize, irc-conduit, jupyter, katip-elasticsearch, kazura-queue, keiretsu, keter, keysafe, laborantin-hs, lambdacube-compiler, lambdatex, ldap-client, leveldb-haskell, leveldb-haskell-fork, libjenkins, lifted-async, lifted-protolude, linode, liquid-fixpoint, logging-effect, lvish, make-package, mangopay, marquise, mealstrom, mediabus, mediabus-rtp, mellon-core, mighttpd2, minio-hs, minisat, moesocks, mqtt, mqtt-hs, music-preludes, mvc, mvc-updates, nats-queue, netease-fm, network-transport-amqp, network-transport-zeromq, ngx-export, nicovideo-translator, parconc-examples, pg-harness, pg-harness-server, pgstream, phybin, pipes-cliff, pipes-p2p, pipes-postgresql-simple, pipes-protolude, pipes-shell, pixelated-avatar-generator, powerqueue, powerqueue-levelmem, prefork, progress-meter, promise, propellor, protolude, protolude-lifted, pubnub, pulse, push-notify, push-notify-ccs, quoridor-hs, rados-haskell, raketka, rapid, rasa, reload, remotion, restricted-workers, ridley, rospkg, runmany, sarsi, satchmo, sbv, scalp-webhooks, scrape-changes, servant-haxl-client, servant-subscriber, shadowsocks, shelduck, shell-conduit, shelly, shelly-extra, simple-log, snap-error-collector, snap-testing, snaplet-scoped-session, snaplet-wordpress, snmp, socketed, sscan, stack, stack-run, stack-run-auto, stackage-curator, stackage-install, statgrab, steeloverseer, stm-chunked-queues, stm-conduit, store, stratum-tool, streaming-commons, t3-server, tailfile-hinotify, task-distribution, taskpool, tasty, tasty-golden, tasty-silver, tasty-smallcheck, threepenny-gui, time-warp, tiny-scheduler, tls, tpar, transf, tslogger, turtle, typed-process, typed-spreadsheet, uhttpc, update-nix-fetchgit, ureader, vault-tool-server, vaultaire-common, vgrep, vigilance, wai-handler-launch, wai-middleware-consul, warp, websockets-rpc, ws-chans, xdcc, yesod-bin, yesod-static, yesod-websockets, yet-another-logger, zeromq3-haskell, zeromq4-haskell, zifter
comments powered byDisqus