gpt4 book ai didi

haskell - haskell channel `Control.Concurrent.Chan` 对多个读者/生产者安全吗?

转载 作者:行者123 更新时间:2023-12-04 03:45:36 27 4
gpt4 key购买 nike

我需要将一个并发系统与一个共享 Control.Concurrent.Chan 放在一起线程之间。将只有一个消费者和许多生产者。
看着 Chan documentation我没有看到任何关于可能在同一 channel 上工作的消费者和生产者数量的警告,并且源代码似乎正在使用 MVar 的默认“安全”访问器。 s,因此我认为假设不应该有限制应该是安全的,但我不确定。
所以,我的问题是......你知道haskell channel 对于多个读者和制作人来说是否安全(一般来说)?

最佳答案

它们对于任意数量的线程都是安全的。它们是一个简单的基于 MVar 的链表。设计权衡允许 dupChan 有助于在相反的情况下向多个读者广播。

Chan 非常简单,它不计算里面的元素数量,也没有上限。因此,如果生产者超过消费者,那么 Chan 将变得非常非常大。如果这是一个问题,那么您可以将 Chan 与 (MVar Int) 配对。并让生产者和消费者修改 Chan 中项目的运行总数。

关于haskell - haskell channel `Control.Concurrent.Chan` 对多个读者/生产者安全吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9616515/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com