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