Administrator
发布于 2023-09-02 / 4 阅读
0
0

C语言多线程的条件变量用法

一、必备知识

  • 多线程基础知识
  • 条件变量的语法

二、用法

全局:
  • 建立 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函数

猿神,起洞!函数,启动! 运用多线程启动函数 consumerproducer


评论