У меня есть код ниже, в котором функциональная панель блокирует мьютекс, а затем вызывает функцию foo, однако функция foo блокирует тот же мьютекс. согласно моему пониманию, тупиковая блокировка произойдет, потому что foo пытается заблокировать один и тот же мьютекс, и он был заблокирован на панели функций. Но приведенный ниже код выполняется без остановки. Кто знает причину ??
pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;
void foo()
{
pthread_mutex_lock(&mutex);
cout<<"excuting foo!!"<<endl;
pthread_mutex_unlock(&mutex);
}
void bar()
{
pthread_mutex_lock(&mutex);
cout<<"excuting bar!!"<<endl;
foo();
pthread_mutex_unlock(&mutex);
}
int main()
{
bar();
}