我喜欢dispatch_data_t。它在一个内存范围之上提供了一个有用的抽象:它提供引用计数,允许使用者创建任意子范围(参与父范围的ref计数)、连接子范围等(我不会费心去详细介绍--文档就在这里:Managing Dispatch Data Objects)
我一直在尝试找出是否有C++11的等价物,但术语“范围”、“内存”和“引用计数”非常通用,这使得在谷歌上搜索这一点有点困难。我怀疑那些比我花更多时间在C++标准库上的人可能会对此了如指掌。
是的,我知道我可以从dispatch_data_t代码中使用C++应用程序接口,是的,我知道为这样的事情设计一个简单的first pass实现并不困难,但我特别想要的是一种适合C++的、高度完善/可靠的东西。(也许是Boost?)
发布于 2014-04-01 21:41:19
不是的。
范围视图被提议用于未来的标准修订,但它们是不拥有的。
dispatch_data_t与GCD高度相关,因为清理发生在创建时确定的指定队列中:要复制这种行为,我们需要std中的线程池和队列,而我们没有这些。
正如您已经注意到的,将重叠的不可变范围类型写入稀疏或连续内存并不难。完全平衡,它必须支持分配器,某种原始的输入缓冲系统(拥有/销毁机制上的类型擦除?),具有按块进行异步迭代的工具(带有调优的块大小),仔细处理错误和异常,以及有效地将rc 1视图转换为可变版本的方法。
那么复杂的东西首先必须出现在像boost这样的库中,并经过迭代改进。而且由于它是相当多的方面,具有足够的属性来满足您的目的的东西可能已经存在了。
如果你有自己的想法,我鼓励你提交给boost考虑。
https://stackoverflow.com/questions/22786878
复制相似问题