![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
笔记
BenBenF19
纸上得来终觉浅,绝知此事要躬行
展开
-
读写锁和自旋锁
读写锁和自旋锁读写锁自旋锁 读写锁 读写锁的三种状态: 读模式下加锁状态(以共享模式锁住) 写模式下加锁状态(以互斥模式锁住 ) 不加锁状态 读写锁的特点: 一次只有一个线程可以占有写模式的读写锁,但是多个线程可以同时占有读模式的读写锁。 当有一个线程试图以写模式获取锁时,通常会阻塞随后的读模式锁请求,以避免读模式锁长期占用,而等待写模式锁的请求一直得不到满足。 自旋锁 自旋锁特点: 自旋锁与互斥量类似,但它不是通过休眠使线程阻塞,而是在获取锁之前一直处于忙等(自旋)阻塞状态,即一直消耗CPU资源原创 2021-05-31 23:16:14 · 267 阅读 · 0 评论 -
互斥量使用要点
互斥量 使用要点: 所有线程设计都应该遵守相同的数据访问规则,否则,如果允许某个线程在没有得到锁的情况下访问共享数据,还是会出现数据不一致的问题。 所有线程都应该按同一顺序上锁,以避免死锁(在其他资源上仍可能出现死锁)。 如果无法按顺序上锁, 可以在不能获取锁时,先释放已占有锁,做好清理工作,延时一段时间再试。 ...原创 2021-05-30 22:49:20 · 231 阅读 · 0 评论 -
线程同步(数据一致性)
线程同步(数据一致性) 以下情况会出现数据一致性问题: 变量修改时间多于一个存储器访问周期 多个线程试图同时修改同一变量 程序对变量的操作步骤组合并非原子操作 以下情况不会出现数据一致性问题: 执行原子操作 解决数据一直性问题 ...原创 2021-05-30 19:51:48 · 255 阅读 · 0 评论