Is there any difference between
pthread_mutex_t lock = PTHREAD_MUTEX_INITIALIZER;
Or
pthread_mutex_t lock
You can set more attributes of the mutex with the dynamic initialisation, plus you can only use the dynamic method if you're adding a bunch of mutexes at run time.
There's nothing wrong with the static approach though, if that fits your needs.