I' ve не понял причину в использовании pthread_key_create, можно ли сказать почему?

We can pass argument to a thread when using pthread_create /(not key_), if it is over using value per thread. If about using static storage, we use mutexes, so, what is it saying we use pthread_key_create? With example & emphasize on why it is born (application & need of it)? I heard it is useful for migrating single threded applications, but they still use mutexes. So, what is the point?

Спасибо!

2
nl ja de
Я don' t понимают ваш вопрос. Вы don' t хотят использовать mutexes? pthread, против какой?
добавлено автор Skatox, источник

1 ответы

pthread_key_create is used to create a unique identifier for a piece of thread-local storage.

Каждая нить может тогда сохранить различную стоимость для каждого ключа. Это может быть полезно, мигрируя код, который первоначально использует globals, но где вы хотите, чтобы у каждой нити выполнения была своя собственная независимая версия глобальной стоимости. Можно использовать локальную память потока вместо глобального.

Вы не должны использовать mutexes, получая доступ к локальным данным потока, принадлежащим нити, в которой вы находитесь.

3
добавлено
It' s не возможный сказать в целом. В любом случае локальные данные потока не непосредственно альтернатива глобальным данным, защищенным mutex. Обычно вы выбираете между ними на основе поведения, которое вы хотите, не на основе работы.
добавлено автор Steve Jessop, источник
таким образом это увеличит работу по сравнению с mutex?
добавлено автор user683595, источник