繁体   English   中英

线程本地存储和 iOS

[英]Thread-Local storage and iOS

我的理解是 iOS 不支持__thread 显然,有一种方法可以使用pthread_setspecific来做到这一点。 但是,是否已经有一个模板 class 实现了这个功能?

我想重新发明轮子,尤其是因为它不会是一段简单的代码。

任何链接将不胜感激!

干杯

Foundation 提供-[NSThread threadDictionary] 您可以使用它来存储线程本地 Objective-C 对象,其中可能包括包装任何动态存储地址的NSValue

请注意,Cocoa 正在朝着线程代码的线程盲执行方向发展,您可以在其中提交代码块以在任何可用的系统拥有的线程上运行。 这是 Grand Central Dispatch 和共享NSOperationQueue使用的 model 。 依赖线程本地存储的代码不会充分利用这个 model。 有关详细信息,请参阅 Apple 的并发编程指南

ETA:从 iOS 5 / OS X 10.7 开始,Grand Central Dispatch 通过dispatch_queue_set_specificdispatch_queue_get_specificdispatch_get_specific函数获得了您可以称之为队列本地存储的东西。 除了为键设置新值或队列被销毁时的值之外,设置器还允许您提供析构函数 function。 getter sans 队列使用当前队列作为上下文,如果当前队列上未定义键,则将在当前队列的目标队列上重复查找(类似于原型 OO 系统中的属性查找方式)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM