Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用苹果创建期货';s GCD_C_Concurrency_Asynchronous_Macos_Objective C - Fatal编程技术网

使用苹果创建期货';s GCD

使用苹果创建期货';s GCD,c,concurrency,asynchronous,macos,objective-c,C,Concurrency,Asynchronous,Macos,Objective C,我正在开发一个库,它在grandcentraldispatch(特别是C级API libdispatch)之上实现了actor模型。基本上,我的系统概述如下: 参与者之间使用消息进行通信 仅多播通信(一个参与者对多个参与者) 发送者和接收者通过一块黑板相互分离,在黑板上消息被推送到另一个位置 消息推送到黑板上后,将使用dispatch_group_async()在默认队列中异步发送消息 我正在尝试用该语言实现futures,因此我创建了一个新类型,其中包含一些信息: 自己的一群 正在“返回

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

  • 参与者之间使用消息进行通信
  • 仅多播通信(一个参与者对多个参与者)
  • 发送者和接收者通过一块黑板相互分离,在黑板上消息被推送到另一个位置
  • 消息推送到黑板上后,将使用dispatch_group_async()在默认队列中异步发送消息
我正在尝试用该语言实现futures,因此我创建了一个新类型,其中包含一些信息:

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

futures实现的其余部分是非常清楚的,除了它完全取决于能够根据消息从参与者那里获得未来的价值

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

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

事实上已经向我指出,当我看到他的initWithBlock:on MAFuture时,我意识到我需要做什么。与那里所做的非常相似,因此我将保留关于我如何做的冗长回答。

实际上已经向我指出,当我看到他的initWithBlock:on MAFuture时,我意识到我需要做什么。非常类似于那里所做的,所以我将保留关于我如何做的冗长回答