条件变量和线程池

但当需要创建大量线程时,假设 T1 为创建线程的时间,T2 为在线程任务执行时间,T3 为线程销毁时间,当 T1 + T3 > T2,这时候就不划算了,使用线程池可以降低频繁创建和销毁线程所带来的开销,任务处理时间比较短的时候这个好处非常显著。3. pthread_cond_sigal 信号会被多个线程收到,这就是线程的惊群效应。② 线程池工作线程,它是任务队列任务的消费,等待新任务的信号。1. 概念:通俗的讲就是一个线程的池子,可以循环完成任务的一组线程集合。必要性:为了实现等待某个资源,让线程休眠。
摘要由CSDN通过智能技术生成

条件变量

        使用场景:生产者消费者问题

        必要性:为了实现等待某个资源,让线程休眠。提高运行效率

int pthread_cond_wait(pthread_cond_t *restric cond,
                            pthread_mutex_t *restrict mutex);


int pthread_cond_timedwait(pthread_cond_t *restrict cond,
                                thread_mutex_t *restrict mutex,
                                const struct timespec *restrice abstime);


int pthread_cond_signal(pthread_cond_t *cond);


int pthread_cond_broadcast(pthread_cont_t *cond);

                使用步骤:

使用步骤:

pthread_cond_t cond = PTHREAD_COND_INITIALIZER;//初始化条件变量

pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;//初始化互斥量


生产资源线程:

pthread_mutex_lock(&mutex);

开始生产资源:

pthread_cond_sigal(&cond); //通知一个消费线程

或者:

pthread_cond_broadcast(&cond); //广播通知多个消费线程

pthread_mutex_unlock(&mutex);


消费者线程:

p
  • 12
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值