2 #import <objc/objc_arc.h>
5 static void objc_tls_free(void *tls
) {
8 static pthread_key_t objc_tls_key
;
10 static void createKey() {
11 pthread_key_create(&objc_tls_key
, objc_tls_free
);
13 objc_tls
*tls
= calloc(1, sizeof(objc_tls
));
15 pthread_setspecific(objc_tls_key
, tls
);
18 objc_tls
*objc_tlsCurrent() {
19 static pthread_once_t createKeyOnce
= PTHREAD_ONCE_INIT
;
21 pthread_once(&createKeyOnce
, createKey
);
23 return pthread_getspecific(objc_tls_key
);