Нет заметного различия между мьютексом, который создается в заблокированном состоянии, и мьютексом, который создается и впоследствии блокируется потоком, который его создает. То есть если вы напишите (гипотетически):
pthread_mutex_init(&mutex, &prelocked_attr);
/* done */
против
pthread_mutex_init(&mutex, 0);
pthread_mutex_lock(&done);
/* done */
В обоих случаях любой другой поток будет пытаться каким-либо образом получить доступ к мьютексу до того, как создающий поток достигнет комментария "done", и впоследствии выполнит действие, которое позволит другим потокам узнать, что мьютекс существует.
Тот факт, что вы думаете, что вам нужен предварительно заблокированный мьютекс, сильно подсказывает мне, что вы пытаетесь сделать что-то очень-очень неправильное и, вероятно, вызываете неопределенное поведение.