c++ - 是否有一个 `std::` 相当于 libdispatch 的 `dispatch_data_t` ?

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

我喜欢 dispatch_data_t。它在内存范围之上提供了一个有用的抽象:它提供引用计数,允许消费者创建任意子范围(参与父范围的引用计数),连接子范围等。(我不会'不要费心去了解血淋淋的细节——文档就在这里:Managing Dispatch Data Objects )

我一直在试图找出是否有 C++11 等效项,但术语“范围”、“内存”和“引用计数”非常通用,这使得谷歌搜索有点困难.我怀疑那些在 C++ 标准库上花费的时间比我多的人可能会一头雾水。

是的,我知道我可以使用 C++ 代码中的 dispatch_data_t API,是的,我知道不难实现这样的一个简单的首次通过实现一个东西,但我特别在寻找 C++ 惯用的东西,并且具有高度的抛光/可靠性。 (也许提升?)

最佳答案

没有。

正在为 future 的标准修订提议范围 View ,但它们是非拥有的。

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

正如您所注意到的,将拥有重叠的不可变范围类型写入稀疏或连续内存并不难。完全抛光它必须支持分配器,某种原始输入缓冲系统(拥有/销毁机制的类型删除?),具有按 block 异步迭代的实用程序(具有调整的 block 大小),仔细处理错误和异常,并且一些有效地将 rc 1 View 转换为可变版本的方法。

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

如果您自己推出,我鼓励您提交它以供 boost 考虑。

关于c++ - 是否有一个 `std::` 相当于 libdispatch 的 `dispatch_data_t` ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22786878/

相关文章:

templates - 模板化成员函数的地址

c++ - 在 C++ 中以十六进制读取文件

ios - 如何在后端作业中实现旋转轮?

C++继承,如何在基类方法中调用子类方法?

c++ - 带有 libcurl 的 HTTP Post header 字段

c++ - 实现自己的 begin() 和 end()

c++ - 使用 C API 覆盖 Lua 中的赋值运算符

c++ - 如何确保一个类仅派生自预定义的一组派生类?

objective-c - AFNetworking:为更高优先级的请求中断后台请求

ios - Swift 后台执行选择器