Proposal: Control.Concurrent.Async
Thomas Schilling
nominolo at googlemail.com
Fri Jun 8 18:31:27 CEST 2012
I fixed the docs a tiny bit in: https://github.com/simonmar/async/pull/1
Other comments:
- Module introduction is missing.
- There are no tests whatsoever. I would like to have a few stress
tests that throw lots of asynchronous exceptions to make sure that
exception masking etc behaves correctly.
- Why is there no waitAnyCancel?
- Same with waitEitherCancel
On 8 June 2012 09:37, Simon Marlow <marlowsd at gmail.com> wrote:
> I'd like to add a higher-level concurrency API to the base package. This API
> has grown while I've been working on examples for my book, and I'm convinced
> that we should have something like this in the standard libraries. Here's
> the API I propose:
>
> http://community.haskell.org/~simonmar/async-stm/Control-Concurrent-Async.html
>
> In fact it already exists in at least two packages on Hackage: 'async' and
> 'threads'. My version is a superset of both of these, except for a few
> small differences (which are up for discussion, of course).
>
> One good reason to have this package is that it avoids some common pitfalls,
> such as forgetting to handle exceptions in your child threads. In the Async
> API, you get to choose whether to (a) receive the result as 'Either
> SomeException a', or (b) have the exception re-thrown in the waiting thread.
> You don't get to ignore it altogether.
>
> Another common pitfall avoided by this library is accidentally leaving
> threads running in the background. This is handled by withAsync:
>
> withAsync :: IO a -> (Async a -> IO b) -> IO b
>
> the child thread is always cancelled (i.e. killed) when the second argument
> returns or throws an exception, if it hasn't finished already.
>
>
> I'm opening this up for discussion so that we can tidy up any inconsistent
> details and add any functions that people feel are missing. Naming is
> obviously up for discussion too.
>
> Cheers,
> Simon
>
>
>
> _______________________________________________
> Libraries mailing list
> Libraries at haskell.org
> http://www.haskell.org/mailman/listinfo/libraries
--
Push the envelope. Watch it bend.
More information about the Libraries
mailing list