当前位置:网站首页>线程(下):读写者模型\环形队列\线程池
线程(下):读写者模型\环形队列\线程池
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任务;(这里的任务一定要给处理方案!)
批量化完成任务 
本篇也就只有这么多了。
感谢你的阅读
祝你好运~

边栏推荐
猜你喜欢

【OpenCV图像处理5】图像的变换

用 PySpark ML 构建机器学习模型

电流探头如何设置示波器参数

基于Nonebot2的qq机器人如何测试超管账号

释放高通量算力价值潜能 JASMINER持续领跑 Web3 市场

干货 | 查资料利器:线上图书馆

2022 R2 transportable pressure vessel filling operation examination question bank simulation platform

【Mindspore】【310推理】导入mindir文件出错

最牛最全的 Postman 实现 API 自动化测试教程

PAC文件解释-转载 小胡子哥的个人网站
随机推荐
关于rust的mongodb驱动count方法无法与near条件一同使用的问题
告诉你如何从keil工程知道使用了多少RAM和ROM空间
最新开源的面试笔记,天花板级别!
Flink CDC介绍和个人理解
ZZULIOJ:1020: 两整数排序
【OpenCV图像处理4】算术与位运算
2022年P气瓶充装操作证考试题库及模拟考试
2022年A特种设备相关管理(电梯)考试模拟100题及答案
redis basic data types
深度学习之-01
sql注入之宽字节注入,limit,order by
JS获取当前时间的年、月、日、时间等
今天月亮很美
网络层与数据链路层
Ueditor editor arbitrary file upload vulnerability
开发智能硬件过程中需要掌握的方法之经典
[crit] 23856#0: *101796511 stat()
B+树与B树的区别、Hash索引与B+树索引的区别
微信公众号开发
LeetCode 2369. 检查数组是否存在有效划分 动态规划