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?

Спасибо!

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

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

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