Pravdepodobne nastane deadlock pri zamykaní mutexov, do úvahy prichádza aj vyhladovanie vlákna (starvation). Bez ukážky implementácie, na ktorej by bolo vidieť, ako pracuješ s mutexami, sa konkrétnejšie poradiť nedá.
S takýmito problémami zápasí asi každý, kto začína s viacvláknovým programovaním. Pohľadaj si na webe niečo o synchronizácii pre "multiple readers single writer" - ide o častý prípad, ktorý sa rieši pomocou read-write locku (v Pthreads je to pthread_rwlock_t).