С типичной блокировкой мьютекса поток будет спать до тех пор, пока не получит мьютекс, а когда он это сделает, он заблокирует все остальные потоки, пока не разблокирует мьютекс.
pthread_mutex_trylock - это то, что вам нужно.
if(pthread_mutex_trylock())
{
mutex_unlock()
}
else
{
}
синтаксис неправильный ... не уверен, что возвращаемое значение trylock является так, посмотрите их на man-странице или в Google.