This is my test program.I use g++
to compile code and expect it to block when the function void foo()
is executed, but it don't block . I don't know what is wrong? I use gcc
to compile code, it can block. who can tell me difference.
#include <pthread.h>
#include <iostream>
using namespace std;
static pthread_mutex_t mutex;
void foo()
{
pthread_mutex_lock(&mutex);
cout<<"this is foo()"<<endl;
pthread_mutex_unlock(&mutex);
}
void bar()
{
pthread_mutex_lock(&mutex);
cout<<"this is bar()"<<endl;
foo();
pthread_mutex_unlock(&mutex);
}
int main()
{
pthread_mutex_init(&mutex, NULL);
bar();
return 0;
}
exepect output
this is bar()
actual output:
this is bar()
this is foo()