文档声明:
以下资料均属于本人在学习过程中产出的学习笔记,如果错误或者遗漏之处,请多多指正。并且该文档在后期会随着学习的深入不断补充完善。感谢各位的参考查看。
笔记资料仅供学习交流使用,转载请标明出处,谢谢配合。
如果存在相关知识点的遗漏,可以在评论区留言,看到后将在第一时间更新。
作者:Aliven888
1、背景
在进行多线程编程时,我们总是会遇到多线程读写竞争的问题,为了解决这种多线程同时访问同一变量时出现竞争的问题,操作系统层面提供了锁、信号量、条件变量等几种线程同步机制。
但是这种同步机制可能会导致以下问题的出现:多线程操作同一变量时,需要频繁的加锁、解锁等操作,以避免读写对同一变量的操作,这样就会导致系统调用会陷入内核空闲,需要频繁的进行上下文的切换,进而导致程序的开销急剧增加。
为了减少程序的开销,双 buffer 缓存引擎 被设计出来了。
2、使用场景
在开发过程中,我们遇到的多线程访问变量的场景主要有以下几种:
- 一写一读:一个线程写,一个线程读。
- 多写一读:多个线程写,