【问题标题】:Haskell one way `dupTChan`Haskell 一种方式`dupTChan`
【发布时间】:2014-04-04 23:44:35
【问题描述】:

有没有类似this one的函数。 除非你这样做:

newChan = dupTChanOneWay oldChan

写给oldChan 的任何东西都会写给newChan,但不是相反?

【问题讨论】:

  • 您可以有几个通道和一个执行路由的线程。由于某种原因这是不可接受的吗?
  • 其实我才刚刚开始这样做。我只是想知道是否有更优雅的方式。
  • 这是一个有趣的问题。经过一番思考,我不相信这可以通过TChans 来完成,因为它们目前是结构化的。但是,您可以使用此附加功能在其自己的模块中定义自己的 TChan 类型和操作 - 如果您对此感兴趣,应该不会太难。
  • @ThomasM.DuBuisson -- 因为我认为这是这个问题所能得到的最佳答案,也许您可​​以将它们添加为真正的答案,以解决未回答的问题?

标签: haskell stm variations


【解决方案1】:

我实际上认为这在没有路由线程的情况下是可能的。它并不完全是所要求的数据结构——一个实际的 TChan——但它确实产生了一种结构,您可以从“两个来源”中读取,但您可以专门将其写入。

这个概念很简单。只需复制您最初的 Tchan。现在,也创造一个新的、新鲜的Tchan。现在,您可以从 dup'd chan orElse 中读取新的 chan——这为您提供了一个“输出”通道,可以有效地合并您的两个输入通道。现在,写入初始通道会写入两者,写入新通道只会写入新合并的“通道”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-04
    • 2017-11-23
    • 2016-02-27
    • 1970-01-01
    • 2011-10-23
    • 2013-05-04
    • 1970-01-01
    相关资源
    最近更新 更多