互斥量
代码
#include<stdio.h>
#include<iostream>
#include<stdlib.h>
#include<stdio.h>
#include<unistd.h>
#include<pthread.h>
#include<pthread.h>
using namespace std;
int total = 1000;
pthread_mutex_t mutex;//互斥量
pthread_cond_t cond_0, cond_1;//条件变量,用于线程之间发送信号。
void *consumer_0(void *ptr){
int amount = 100;
for(int i = 1; i < 9; i++){
pthread_mutex_lock(&mutex);//上锁
total -= amount;
cout << "消费者0消费:" << amount << " 剩余:" << total << endl;
pthread_cond_signal(&cond_1);//发送信号唤醒另一个线程。
pthread_mutex_unlock(&mutex);//解锁
}
pthread_exit(0);
}
void *consumer_1(void *ptr){
int amount = 10;
for(int i = 1; i < 21; i++){
pthread_mutex_lock(&mutex);
total -= amount;
cout << "消费者1消费:" << amount << " 剩余:" << total << endl;
pthread_cond_signal(&cond_0);
pthread_mutex_unlock(&mutex);
}
pthread_exit(0);
}
int main(){
pthread_t con_0, con_1;
pthread_mutex_init(&mutex, 0);
pthread_cond_init(&cond_0, 0);
pthread_cond_init(&cond_1, 0);
pthread_create(&con_0, 0, consumer_0, 0);
pthread_create(&con_1, 0, consumer_1, 0);
pthread_join(con_0, 0);
pthread_join(con_1, 0);
pthread_cond_destroy(&cond_0);
pthread_cond_destroy(&cond_1);
pthread_mutex_destroy(&mutex);
}