1. 线程安全问题
多个线程 读写 共享资源时发生了指令交错,就可能出现线程安全问题。
案例1
正确执行时,结果应该为0。
![image-20220830205259807](https://i-blog.csdnimg.cn/blog_migrate/4715bf220a558c65a940a918c60838f3.png)
错误执行时,得到了错误的结果1。
![image-20220830205218381](https://i-blog.csdnimg.cn/blog_migrate/e4348b3811248ac627b4f30dbc3bb842.png)
案例2
![image-20220830212637948](https://i-blog.csdnimg.cn/blog_migrate/bf49ff91f7677b90939211b4eb450fbc.png)
2. 临界区
如果一段代码块内存在 对共享资源的多线程读写操作,就称这段代码块为「临界区」。
![image-20220830222747795](https://i-blog.csdnimg.cn/blog_migrate/48178f365339ba79c2e4ded3f1489fb5.png)
3. 竞态条件
多个线程在临界区内执行,由于代码的执行序列不同而导致结果无法预测,称之为发生了「竞态条件」
参考资料
[视频] 04.002-小故事-线程安全问题
[视频] 04.003-上下文切换-分析
[视频] 04.004-临界区与竞态条件