Если условие истинно, do_other_stuff
будет вызываться без блокировки мьютекса, а затем мьютекс будет освобожден без блокировки. Просто неправильно!
Просто без перехода
if( you_think_youre_genius )
{
pthread_mutex_lock(&mutex);
}
else
{
...
pthread_mutex_lock(&mutex);
//Assumming no expetion thrown
do_stuff();
}
do_other_stuff();
pthread_mutex_unlock(&mutex);