当`g ++`编译代码

时间:2016-05-31 15:58:56

标签: c++ mutex

这是我的测试程序。我使用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()

0 个答案:

没有答案