1. 并发编程
多线程加速程序运行所面临的问题:上下文切换、死锁、硬件和软件的限制。
1. 上下文切换
- CPU按照分配给各个程序的时间片来执行程序或者切换线程执行。
- 多线程不一定更快,并发执行的累加操作在不是大数据量的情况下会比串行的慢。
上下文切换势必会带来时间上的开销,解决的方法有:并发编程、CAS算法、使用最少线程、使用协程。
2. 死锁
- 死锁产生:循环且等待、互斥、占有且等待、不可剥夺。
- 死锁解除:终止进程、释放资源。
保证获得锁的顺序,先得到锁的后释放。
3. 资源限制
受限制于计算机的硬件和软件。
提高代码运行速度就是尽量将串行代码并发执行,但有时串行要比并发执行快,因为增加了上下文切换和资源调度的时间。对于软件资源的限制,可以采用连接池将资源复用。