互斥锁
API
pthread_mutex_t m_mutex;
pthread_mutex_init(&m_mutex,NULL);
pthread_mutex_lock(&m_mutex);
pthread_mutex_unlock(&m_mutex);
pthread_mutex_destroy(&m_mutex);
可能发生死锁的情况:
- 同一个线程中对已经加锁的互斥锁再次加锁,pthread_mutex_lock()会一直阻塞下去,发生死锁
- 现在有两个线程A、B,按照不同的顺序申请两个互斥锁,可能会发生死锁。
#include <iostream>
#include <pthread.h>
#include <unistd.h>
#include <stdio.h>
using namespace std;
pthread_mutex_t mutex_a;
pthread_mutex_t mutex_b;
void* fun(void*)
{
pthread_mutex_lock(&mutex_a);
cout<<"子线程对a加锁"<<endl;
sleep(5);
cout<<