一、必备知识
- 多线程基础知识
- 条件变量的语法
二、用法
全局:
- 建立 mutex 互斥锁
pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;- 建立 cond 条件变量
pthread_cond_t cond = PTHREAD_COND_INITIALIZER;- 设置条件 ready (可选,如果没选则对应函数做相应删减)
int ready = 0;生产者(获取数据、释放信号)
void* producer(void* args){
/* 初始化部分 */
while(1){
pthread_mutex_lock(&mutex);
/* 数据处理部分 */
ready = 1;
pthread_mutex_unlock(&mutex);
pthread_cond_broadcast(&cond); //或者 pthread_cond_singal
}
}消费者(获取信号、加工数据)
void* consumer(void* args){
/* 初始化部分 */
while(1){
pthread_mutex_lock(&mutex);
while(!ready)
pthread_cond_wait(&cond,&mutex);
/* 处理数据部分 */
ready = 0;
pthread_mutex_unlock(&mutex);
}
}main函数
猿神,起洞!函数,启动!
运用多线程启动函数 consumer 和 producer