线程本地存储和iOS

Goz*_*Goz 9 c++ templates pthreads thread-local-storage ios

我的理解是iOS不支持__thread.显然,有一种方法可以使用pthread_setspecific.但是,是否已经有一个已实现此功能的模板类?

我不得不重新发明轮子,特别是因为它不是一段简单的代码.

任何链接将非常感谢!

干杯

Jer*_*man 20

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

请注意,Cocoa正在向线程代码的线程盲执行发展,您可以在其中提交要在任何可用的系统拥有的线程上运行的代码块.这是Grand Central Dispatch和共享NSOperationQueues 使用的模型.依赖于线程本地存储的代码将无法充分利用此模型.有关详细信息,请参阅Apple的并发编程指南.

ETA:与iOS 5开始/ OS X 10.7,大中央调度上涨,你可以通过所谓的队列本地存储dispatch_queue_set_specific,dispatch_queue_get_specificdispatch_get_specific功能.除了为密钥设置新值或销毁队列时的值,setter还允许您提供析构函数.getter sans队列使用当前队列作为上下文,如果未在当前队列上定义密钥,则将在当前队列的目标队列上重复查找(类似于原型OO系统中的属性查找工作方式).