【发布时间】:2017-10-03 16:14:24
【问题描述】:
我想使用Control.Concurrent.Chan。有一个大列表,提供者将其拆分为较小的列表。它将这些块写入通道。然后消费者从通道中读取这些块并进行处理。
一旦没有更多数据可以提供和消费,如何关闭分叉并返回结果?
使用TChan 可以检查通道是否为空。但是我想学,怎么用简单的Chan
我发现的大多数示例代码都只是使用forever $ getLine ...,然后从 main 开始,如果没有完成分叉,这不是问题,因为一旦 main 结束,分叉也会结束。我还没有找到一个好的消费者提供者示例,我可以从中了解如何与 Chans 合作
【问题讨论】:
-
也许将您的数据包装在另一种类型中,例如
data Message a = WorkPackage a | Done?
标签: multithreading haskell channel