Я делаю это неправильно, да?
... if( you_think_youre_genius ) goto goto_sucks: ... pthread_mutex_lock(&mutex); do_stuff(); goto_sucks: do_other_stuff(); pthread_mutex_unlock(&mutex);