我喜欢dispatch_data_t
。它在一系列内存之上提供了一个有用的抽象:它提供引用计数,允许消费者创建任意子范围(参与父范围的引用计数),连接子范围等。(我赢了&# 39;无需深入了解血腥细节 - 文档就在这里:Managing Dispatch Data Objects)
我一直试图找出是否有C ++ 11等价物,但条款"范围","记忆"和"引用计数"是非常通用的,这是谷歌搜索这一点挑战。我怀疑那些花费更多时间在C ++标准库上的人可能会知道他们的头脑。
是的,我知道我可以使用C ++代码中的dispatch_data_t
API,是的,我知道创建一个天真的第一遍实现并不困难这样的事情,但我特意寻找C ++的惯用语,并具有高度的抛光/可靠性。 (可能会提升?)
答案 0 :(得分:4)
没有
正在为未来的标准修订提出范围视图,但它们是非拥有的。
dispatch_data_t
与GCD密切相关,因为清理发生在创建时确定的指定队列中:为了复制该行为,我们需要std
中的线程池和队列,这是我们没有的。
正如您所指出的,拥有重叠不可变范围类型到稀疏或连续内存中并不难写。完全抛弃它必须支持分配器,某种原始输入缓冲系统(在拥有/销毁机制上的类型擦除?),具有异步迭代的块(具有调整的块大小),仔细处理错误和异常,以及某种方法可以有效地将rc 1视图转换为可变版本。
复杂的东西首先必须出现在像boost
这样的库中,然后进行迭代改进。因为它有很多方面,所以具有足够的属性的东西可能已经存在。
如果你自己动手,我建议你提交boost
考虑。