如this answer所示,即使设置了C ++ 11标志,Mac OSX上Xcode的clang也不支持thread_local
存储。即使在最新版本上,Apple LLVM版本7.0.0(clang-700.1.76),目标:x86_64-apple-darwin15.0.0,线程模型:posix,也不支持thread_local
:
../../src/dir/sysArch.h:1505:3: error: thread-local storage is not supported
for the current target
thread_local
^
答案 0 :(得分:3)
Xcode 8(及更高版本)附带的clang版本支持thread_local
关键字;参见讨论here。
答案 1 :(得分:1)
如果pthread_getspecific()
不可用,则可以使用使用NSThread
等的旧方法来实现线程本地存储(或在Objective-C中,thread_local
的线程字典)在您的编译器版本中。