async
async copied to clipboard
Run IO operations asynchronously and wait for their results
When I wrote PRs #104 and #105, I described `withAsync` as equally safe as `race`. That is wrong. `withAsync` silently swallows exceptions in the first argument, e.g. ```hs withAsync (error...
The `Applicative` instance for `ConcurrentlyE` behaves like `concurrently` for successes and like `race` for errors. Does `ConcurrentlyE` also admit an `Alternative` instance, like `Concurrently` does? One way to define it...
Added `Semigroup` and `Monoid` instances for `ConcurrentlyE`. They work by returning either the combination of the successes or the first failure. When the error type is `Void`—that is, impossible—they are...
this example helped me to reproduce what is "thread leak", old example is misleading because suggests that could be reproduced from main thread, but it's not
Async is a nice abstraction, however as far as I can see the following use case is not supported in any straightforward obvious way: * A bunch of tasks to...
Suppose I want to compose a bunch of reads in the way `select(2)` does, then it's very tempting to write something like `forever $ race (forever $ read a) (forever...
I wanted to play with an API that cleans up a thread automatically when its handle goes out of scope. This would probably be an error condition (or bug) and...
Both thread IDs are retained in case they're needed to cancel the corresponding thread (s), which as I understand it keeps the threads live. But of course there's no need...
Is there a reason not to have them? If not would a PR adding them be welcomed?
Here is what `unliftio` has made of the `async` API: https://hackage.haskell.org/package/unliftio-0.2.7.0/docs/UnliftIO-Async.html The purpose of this abstraction is passing in transformer stacks on top of IO in the negative position, as...