纯思考文,看完图个乐
我们知道,事物的发展是前进、上升的运动。
事物的发展过程必然产生新事物与旧事物之间的矛盾。
对于并发而言,并发问题就是并发相对于单线程的矛盾。
在并发之前:
- 多级存储系统(缓存机制)解决了处理器与内存速度之间的矛盾
具有天然缓存一致性问题。
- 超标量处理器通过乱序执行实现并行处理指令
并发时代到来,并发(并行可以理解为特殊的并发)的特点:
- 实现同一时间段内处理多任务。(产生进程(线程)切换场景)
- 线程之间出现了制约的概率场景。(处理同一任务)
新事物与旧事物就此产生矛盾
矛盾一 原子性问题
场景: 并发处理某个任务。 如i++,由两个线程进行处理。
并发的特点:
- 线程切换时机不可控
在这时要让两个线程实现像原来一个线程处理共享资源i就会产生问题。
矛盾二 有序性问题
场景,并发处理某个任务,如 3+5*4,两个线程处理。
并发特点:
矛盾三 可见性问题
缓存机制 + 并发 + 共享资源处理
矛盾的处理方式
- 矛盾一方克服另一方
- 矛盾双方同归于尽
- 矛盾双方形成协同运动新形式
- 矛盾双方融合成一个新事物。
就目前而言,我们通过额外的技术实现:
- 原来的机制没有被改变
缓存依然需要、乱序执行依然存在。
- 并发可以在不产生问题的情况下实现。
即通过额外的技术让矛盾双方形成协同运动新形式。
但是在未来,这种情况不好说,可能处理器可以达到究极快以至于不需要并发这种优化技术,但至少在目前为止,更多的是通过一种黏合剂来实现并存问题的处理。
这就是我们熟悉的并发常用技术。