我的理解是iOS不支持__thread
。显然,有一种方法可以使用pthread_setspecific
。然而,是否已经有一个模板类实现了这个功能呢?
我愿意重新发明轮子,特别是因为它不是一段简单的代码。
任何链接将不胜感激!
Cheers
基金会提供-[NSThread threadDictionary]
。您可以使用它来存储线程本地 Objective-C 对象,其中可能包括NSValue
包装任何动态存储的地址。
请注意,Cocoa 正在朝着线程代码的线程盲执行方向发展,您可以提交要在任何可用的系统拥有的线程上运行的代码块。这是 Grand Central Dispatch 和共享的模型使用的模型NSOperationQueue
s。依赖线程本地存储的代码将无法充分利用此模型。参见苹果的并发编程指南了解更多信息。
ETA:从 iOS 5 / OS X 10.7 开始,Grand Central Dispatch 通过以下方式获得了所谓的队列本地存储:dispatch_queue_set_specific
, dispatch_queue_get_specific
, and dispatch_get_specific
功能。当您为键设置新值或销毁队列时,除了值之外,setter 还允许您提供析构函数。 getter sans 队列使用当前队列作为上下文,如果当前队列上未定义键,则将在当前队列的目标队列上重复查找(类似于原型 OO 系统中属性查找的工作方式)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)