代码之家  ›  专栏  ›  技术社区  ›  jer

用苹果的GCD创造未来

  •  2
  • jer  · 技术社区  · 14 年前

    我正在开发一个库,它在grandcentraldispatch(特别是C级API libdispatch)之上实现actor模型。基本上,我的系统概述如下:

    • 使用消息在参与者之间进行通信
    • 仅多播通信(一个参与者对多个参与者)
    • 发送者和接收者使用一个黑板将消息推送到另一个黑板上。

    我正在尝试用这种语言实现futures,因此我创建了一个新类型,其中包含一些信息:

    • “返回”的值

    但是,我有一个问题,因为dispatch\u block\u t的类型是void(^)(void),所以它不返回任何内容。因此,我的想法是在我未来的\u new()函数中设置另一个组,该组可用于执行返回结果的块,我可以将其存储在我未来的\u t结构中的“value”成员中,这是行不通的。

    在使用这个库时,如果我不得不要求用户(和我自己)意识到未来何时会被系统的其他部分使用的话,那么它的实用性就会大大降低,这是不实际的。

    我想知道是否有人能想出一个解决这个问题的办法?

    1 回复  |  直到 14 年前
        1
  •  0
  •   jer    14 年前