多线程haskell的优雅退出

时间:2010-09-22 04:26:18

标签: multithreading haskell concurrency

这在这一点上完全是理论上的,但我一直试图包装我的 解决这个问题。我们以客户为例。有 每个连接的forkIOd线程,其中一个想要退出 整个程序(即/退出)。这些信息将如何传播到 其他线程?

这不是一个条件,但我假设线程正在读取 他们各自的线程阻塞。因为他们正在闲逛 直到为他们写的东西,他们不能轮询任何类型的“完成” 变量。所以我的第一个想法是unless done。\ / p>

我对任何程序都没有解决方案,因此任何人都可以提供解决方案 对任何语言表示赞赏,但真正的问题是如何做到这一点 Haskell中。

1 个答案:

答案 0 :(得分:8)

我所知道的最好的方法是毒药,这是由CHP库实施的。

请参阅此处的优秀解释:http://chplib.wordpress.com/2009/09/30/poison-concurrent-termination/

上述文章顺便通过了其他解决方案,并解释了为什么它们通常有些脆弱。