Mam problemy z uzyskaniem pozornie nieprawidłowych wyników z biblioteki pthread_getspecific
w bibliotece, która jest przeznaczona do łączenia z różnymi aplikacjami systemu iOS.Jak wykonać wydajną lokalną pamięć wątków w systemie iOS
widzę, że Apple writes:
Kakao i POSIX przechowywać słownika wątek na różne sposoby, więc nie można mieszać i wzywa mecz dwóch technologiach. Tak długo, jak będziesz trzymać się jednej technologii w swoim kodzie nici, wyniki końcowe powinny być podobne. W Cocoa używa się metody threadDictionary obiektu NSThread do pobrania obiektu NSMutableDictionary, do którego można dodać klucze wymagane przez wątek. W POSIXie używasz funkcji pthread_setspecific i pthread_getspecific, aby ustawić i uzyskać klucze i wartości twojego wątku.
Czy to oznacza, że można się spodziewać ani funkcje kakao ani POSIX TLS do pracy w kodzie biblioteki, kiedy nie wiemy, czy kod, który wzywa nas jest już za pomocą jednego lub drugiego?
W jaki sposób uzyskuje się do przechowywania i pobierania wskaźnik lokalny wątku solidnie w tych okolicznościach?
Czy istnieje natywny interfejs API Darwin TLS, którego powinniśmy używać zamiast kakao lub POSIX?
** Rozwiązany **: Objawy, które początkowo powodowały podejrzenie nieprawidłowego działania pthread_getspecific, okazały się być spowodowane zwisającymi wskaźnikami pozostawionymi przez niespokrewniony stan wyścigu w innym miejscu w programie. –