我的理解是 iOS 不支持__thread
. 显然,有一种方法可以使用pthread_setspecific
. 但是,是否已经有一个模板类实现了这个功能?
我想重新发明轮子,尤其是因为它不会是一段简单的代码。
任何链接将不胜感激!
干杯
我的理解是 iOS 不支持__thread
. 显然,有一种方法可以使用pthread_setspecific
. 但是,是否已经有一个模板类实现了这个功能?
我想重新发明轮子,尤其是因为它不会是一段简单的代码。
任何链接将不胜感激!
干杯
基金会提供-[NSThread threadDictionary]
. 您可以使用它来存储线程本地的 Objective-C 对象,其中可能包括NSValue
任何动态存储的地址。
请注意,Cocoa 正在朝着线程代码的线程盲执行方向发展,您可以在其中提交代码块以在任何可用的系统拥有的线程上运行。这是 Grand Central Dispatch 和 shared 使用的模型NSOperationQueue
。依赖线程本地存储的代码不会充分利用此模型。有关详细信息,请参阅 Apple 的并发编程指南。
ETA:dispatch_queue_set_specific
从 iOS 5 / OS X 10.7 开始,Grand Central Dispatch 通过、dispatch_queue_get_specific
和函数获得了可以称为队列本地存储的dispatch_get_specific
功能。setter 允许您在为键设置新值或队列被销毁时提供除值之外的析构函数。getter sans 队列使用当前队列作为上下文,如果当前队列上未定义键,则将在当前队列的目标队列上重复查找(类似于原型 OO 系统中的属性查找方式)。