【发布时间】:2017-07-28 15:05:37
【问题描述】:
有没有办法在用async 包中的async 调用的线程中使用cancel?我可以看到你可以从线程外部取消它,但我想知道是否有一个 cancelSelf :: IO () 函数可以停止它自己的执行。我可以将一些东西与唯一的 id 生成和Async 线程引用的共享Map 一起装订在一起,线程本身可以引用这些引用,但这似乎太多了。我可以逃脱未捕获的异常之类的吗?
【问题讨论】:
-
在我看来,既然您提议的
cancelSelf函数需要您在要取消的点处处于 IO 中,那么在EitherT String IO中同样容易,然后通过返回Left "cancelled"或其他什么来“取消”。
标签: multithreading haskell asynchronous cancellation