这是我的测试程序。我使用g++
编译代码并期望它在执行函数void foo()
时阻止,但它不会阻塞。我不知道出了什么问题?我使用gcc
来编译代码,它可以阻止。谁可以告诉我不同。
#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;
}
执行输出
这是bar()
实际输出:
这是bar()
这是foo()