我pthread_getspecific
在一个旨在链接到各种 iOS 应用程序的库中显然得到错误的结果时遇到了一些问题。
我看到苹果写道:
Cocoa 和 POSIX 以不同的方式存储线程字典,因此您不能混合和匹配对这两种技术的调用。但是,只要您在线程代码中坚持使用一种技术,最终结果应该是相似的。在 Cocoa 中,您使用 NSThread 对象的 threadDictionary 方法来检索 NSMutableDictionary 对象,您可以在其中添加线程所需的任何键。在 POSIX 中,您使用 pthread_setspecific 和 pthread_getspecific 函数来设置和获取线程的键和值。
这是否意味着当我们不知道调用我们的代码是否已经在使用其中一个时,不能期望 Cocoa 和 POSIX TLS 函数在库代码中工作?
在这些情况下,如何稳健地存储和检索线程本地指针?
我们应该使用原生 Darwin TLS 支持 API 来代替 Cocoa 或 POSIX 吗?