linux 顺序锁
来源:互联网 发布:知产律师收入 编辑:程序博客网 时间:2024/06/03 20:38
读读不阻塞,
读写不阻簺,
写写阻塞,
两个字段
1. spinlock_t 字段, 阻塞写
2. sequence字段,写修改, 读检查, 值等不等或者是否偶数, 不等或不为偶,重读
相等且旧值为偶数:无写者
相等但旧值为奇数:写者正在写时读取sequence值,且还在写
不等且旧值为偶数,新值为奇数:在写者之前,开始读, 但现在已经在写了
不等且旧值为偶数, 新值为偶数:在写者之前,开始读, 但现在写者也已经完成了
不等且旧值为奇数,新值为奇数:不会出现的case, 这种应该是相等
不等且旧值为奇数, 新值为偶数:在写者开始之后,开始读, 但现在写者也已经完成了
写获取锁:write_seqlock: sequence加1
写释放锁:write_sequnlock: sequence再加1
读的结构:
unsigned int seq;
do {
seq = read_seqbegin(&seqlock);
/* 临界区 */
}while (read_seqretry(&seqlock, seq))
要求:
不适合指针
读者临界区代码没有副作用
- linux 顺序锁
- linux顺序锁
- Linux设备驱动---顺序锁
- Linux驱动之顺序锁
- linux并发控制之顺序锁
- linux并发控制之顺序锁
- linux 多线程之顺序锁技术
- linux并发控制之顺序锁
- linux驱动中使用顺序锁
- linux并发控制之顺序锁
- LINUX的启动顺序
- Linux 启动顺序
- Suse Linux启动顺序
- Linux的系统启动顺序
- Linux 启动顺序
- SUSE Linux 启动顺序
- Linux 启动顺序
- Linux 开机顺序
- [zt] java中super 的两种用法
- MVC1 and MVC2
- 求子数组的最大和并输出该子数组各成员
- 关于RTEMS MINI2440的QEMU仿真从UBOOT加载问题的研究
- MVC1 and MVC2
- linux 顺序锁
- 常用的试验设计方法和SAS程序
- Ogre学习笔记 2011年3月20日 14点44分
- SGIP协议之Bind
- 关于创业搭档:一个好汉三个帮?
- C++函数
- 利用hash_map解决众数问题
- SGIP协议之Submit
- dos设置ip以及 dns