$ man 7 pthreads
Pthreads man page
Multithreading Programming Guide (Oracle)
System Interfaces: Threads
Shared resources and mutexes
Resources shared by several threads should be protected by mutexes.
Since these shared resources are bottlenecks mutex should be locked the least possible time.
Mutex and race conditions
To avoid race conditions, mutexes should lock in the same order.
A mutex that is locked and always unlocked next cannot cause race conditions (one level lock).