线程(下):读写者模型\环形队列\线程池

 "不曾回顾的往事,是那苦笑的释然"


(一)读写者问题;

本篇只简单提一提读写者问题。

 (1)什么是读写锁?                                         

 ①初始化+销毁

       #include <pthread.h>

       int pthread_rwlock_destroy(pthread_rwlock_t *rwlock);
       int pthread_rwlock_init(pthread_rwlock_t *restrict rwlock,
              const pthread_rwlockattr_t *restrict attr);

②加锁+解锁

int pthread_rwlock_rdlock(pthread_rwlock_t *rwlock);
int pthread_rwlock_wrlock(pthread_rwlock_t *rwlock);
int pthread_rwlock_unlock(pthread_rwlock_t *rwlock);

只需要注意的是,读写锁与角色强关联。是读者角色就用读者锁,反之则用写者锁。

(2)优先原则

在多线程的情况下:

不管是有人在读的时候,让下一个读者不再进入读取,反之让写者进入临界区 写入---写者优先

还是反之 让写者不再进入,让读者继续读取------读者优先。

本质上 都是由具体的场景来决定谁先谁后的问题。


(二)基于POSIX信号的环形队列

 

模拟实现生产 消费

框架;

P\V操作;

Push / Pop


(三)线程池

线程池适用于:

需要大量线程完成,且任务时间短

性能苛刻的应有.....

 让任务 push进 任务列表,再由线程按序 从任务列表中读取 

①框架;

 

push任务;(这里的任务一定要给处理方案!) 

 

批量化完成任务 

 


本篇也就只有这么多了。

感谢你的阅读

祝你好运~

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值