【linux】线程条件变量 信号量

本文介绍了Linux中线程条件变量和信号量的概念及应用。条件变量通常与互斥锁配合,提供多线程会合的场所,涉及pthread_cond_系列函数。信号量作为一种同步机制,能在保证数据同步的同时提高线程并发性,包括sem_系列函数。文中通过生产-消费者模型展示了条件变量的使用,并对比了互斥锁的粒度问题,强调信号量在部分数据共享中的优势。
摘要由CSDN通过智能技术生成

1.条件变量

        条件变量本身不是锁!但它也可以造成线程阻塞

        通常与互斥锁配合使用。给多线程提供一个会合的场所。

        1.主要函数应用

                pthread_cond_init函数

                pthread_cond_destroy函数

                pthread_cond_wait函数

                pthread_cond_timedwait函数

                pthread_cond_signal函数

                pthread_cond_broadcast函数

以上6 个函数的返回值都是,成功返回0,失败直接返回错误号

                pthread_cond_t类型用于定义条件变量

                pthread_cond_t cond;

        pthread_cond_init函数    初始化一个条件变量                

int pthread_cond_init(pthread_cond_t *restrict cond, const pthread_condattr *restrict attr);
参1:需要初始化的条件变量
参2:arrt表条件比那里属性,通常为默认值,传NULL即可
         初始化有两种方法
         1.动态初始化:pthread_cond_init(&cond,NULL)
         2.静态初始化: pthread_cond_t cond = PTHREAD_COND_INITIALIZER ;
          pthread_cond_wait函数    阻塞等待一个条件变量
        
int pthread_cond_wait(pthread_cond_t *restrict cond, pthread_mutex_t *restrict mutex);
参1:已经初始化号的条件变量,如果条件不满足,则一直阻塞等待
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值