当前位置:网站首页>线程(下):读写者模型\环形队列\线程池
线程(下):读写者模型\环形队列\线程池
2022-08-10 04:26:00 【RNGWGzZs】

"不曾回顾的往事,是那苦笑的释然"
(一)读写者问题;
本篇只简单提一提读写者问题。
(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任务;(这里的任务一定要给处理方案!)
批量化完成任务 
本篇也就只有这么多了。
感谢你的阅读
祝你好运~

边栏推荐
- 2022 T Elevator Repair Exam Questions and Mock Exams
- ZZULIOJ:1024: 计算字母序号
- @Autowired注解 --required a single bean, but 2 were found出现的原因以及解决方法
- #【软件STM32cubeIDE下F103配置uart3+DMA收发+简单数据解析-基础样例】
- webrtc学习--webrtc桌面采集
- Kubernetes资源编排系列之一: Pod YAML篇
- 【LeetCode】Day111-字母异位词分组
- 域名DNS解析工具ping/nslookup/dig/host
- 如何在不同场景下选择合适的示波器探头
- ZZULIOJ:1022: 三整数排序
猜你喜欢
随机推荐
[crit] 23856#0: *101796511 stat()
元宇宙 | 你能通过图灵测试吗?
最新开源的面试笔记,天花板级别!
今天月亮很美
【Mindspore】【310推理】导入mindir文件出错
2022年T电梯修理考试题及模拟考试
释放高通量算力价值潜能 JASMINER持续领跑 Web3 市场
2022山东省安全员C证考试题及模拟考试
2022 security officer C certificate test and simulation test in shandong province
打开VsCode经常弹出:尝试在目标目录创建文件时发生一个错误:拒绝访问:重试 跳过这个文件(不推荐),关闭安装程序
解决“#231-D declaration is not visible outside of function”告警方法
【Web3 系列开发教程——创建你的第一个 NFT(7)】创建一个 NFT DApp,给你的 NFT 赋予属性,例如图片
JS gets the year, month, day, time, etc. of the current time
2022年A特种设备相关管理(电梯)考试模拟100题及答案
itoa和aoti函数的自我实现
redis基本数据类型
结构体的内存对齐问题
ZZULIOJ:1020: 两整数排序
LeetCode 301. Remove Invalid Parentheses BFS
什么是遗留代码:有效地处理遗留代码的8个小贴士









