线程本地存储和iOS
Thread-Local storage and iOS
我的理解是iOS不支持__thread
。显然,有一种使用pthread_setspecific
的方法可以做到这一点。但是,是否已经有一个模板类实现了此功能?
我很想重新发明轮子,尤其是因为它不会是一段简单的代码。
任何链接都将不胜感激!
干杯
Foundation提供-[NSThread threadDictionary]
。您可以使用它来存储线程本地Objective-C对象,其中可能包括一个NSValue
,用于包装任何动态存储的地址。
请注意,Cocoa正朝着线程代码的线程盲执行方向发展,在线程盲执行中,您可以提交要在任何可用的系统拥有的线程上运行的代码块。这是Grand Central Dispatch和共享NSOperationQueue
s使用的模型。依赖线程本地存储的代码无法充分利用此模型。有关更多信息,请参阅Apple的并发编程指南。
ETA:从iOS 5/OS X 10.7开始,Grand Central Dispatch通过dispatch_queue_set_specific
、dispatch_queue_get_specific
和dispatch_get_specific
功能获得了所谓的队列本地存储。setter允许您在为键设置新值或销毁队列时,除了提供的值之外,还提供析构函数。getter sans队列使用当前队列作为上下文,如果当前队列上没有定义键,则将在当前队列的目标队列上重复查找(类似于原型OO系统中的属性查找(。
相关文章:
- 将字符串存储在c++中的稳定内存中
- std::原子加载和存储都需要吗
- C++:将控制台输出存储在宏中更好吗
- 使用ios:ate写入到流会覆盖现有文件
- 使用QProcess执行命令,并将结果存储在QStringList中
- 访问存储在向量C++中的结构的多态成员
- 如何从存储在std::映射中的std::集中删除元素
- 存储模板类型以强制转换回派生<T>
- 类型总是使用其大小存储在内存中吗
- 当字符串存储在变量中时,如何将字符串转换为wchar_t
- 使用无符号字符数组有效存储内存
- 如何在cpp.中使用协议缓冲区存储大缓冲区/数组(char/int)
- 使用 pqxx 将 std::vector 存储在 postgresql 中,并从数据库中检索它
- 带结构的二维矢量:如何存储元素
- 添加存储在向量中的大整数的函数出现问题
- 从文件中读取多个字节,并将它们存储在C++中进行比较
- 是否存在可以在iOS上运行的本地键值存储DB(与redis不同)
- 使用 iOS 或 c/c++ 访问 SVN 或远程 Git 存储库等
- iOS 如何将C++对象存储到用作表视图数据源的 NSArray 中
- 线程本地存储和iOS