是否有一个`std ::`等同于libdispatch的`dispatch_data_t`?

时间:2014-04-01 13:08:55

标签: c++ c++11 grand-central-dispatch

我喜欢dispatch_data_t。它在一系列内存之上提供了一个有用的抽象:它提供引用计数,允许消费者创建任意子范围(参与父范围的引用计数),连接子范围等。(我赢了&# 39;无需深入了解血腥细节 - 文档就在这里:Managing Dispatch Data Objects

我一直试图找出是否有C ++ 11等价物,但条款"范围","记忆"和"引用计数"是非常通用的,这是谷歌搜索这一点挑战。我怀疑那些花费更多时间在C ++标准库上的人可能会知道他们的头脑。

是的,我知道我可以使用C ++代码中的dispatch_data_t API,是的,我知道创建一个天真的第一遍实现并不困难这样的事情,但我特意寻找C ++的惯用语,并具有高度的抛光/可靠性。 (可能会提升?)

1 个答案:

答案 0 :(得分:4)

没有

正在为未来的标准修订提出范围视图,但它们是非拥有的。

dispatch_data_t与GCD密切相关,因为清理发生在创建时确定的指定队列中:为了复制该行为,我们需要std中的线程池和队列,这是我们没有的。

正如您所指出的,拥有重叠不可变范围类型到稀疏或连续内存中并不难写。完全抛弃它必须支持分配器,某种原始输入缓冲系统(在拥有/销毁机制上的类型擦除?),具有异步迭代的块(具有调整的块大小),仔细处理错误和异常,以及某种方法可以有效地将rc 1视图转换为可变版本。

复杂的东西首先必须出现在像boost这样的库中,然后进行迭代改进。因为它有很多方面,所以具有足够的属性的东西可能已经存在。

如果你自己动手,我建议你提交boost考虑。