一、并发的优势和缺点

学习内容

并发的优势和缺点

 

优点

资源利用率更好

程序设计在某些情况下更简单

程序响应更快

 

缺点

 

1、频繁的上下文切换

时间片是CPU分配给各个线程的时间,因为时间非常短,所以CPU不断通过切换线程,让我们觉得多个线程是同时执行的,时间片一般是几十毫秒。而每次切换时,需要保存当前的状态起来,以便能够进行恢复先前状态,而这个切换时非常损耗性能,过于频繁反而无法发挥出多线程编程的优势。通常减少上下文切换可以采用无锁并发编程,CAS算法,使用最少的线程和使用协程。

 

解决方案

无锁并发编程CAS算法,利用Atomic下使用CAS算法来更新数据,使用了乐观锁,可以有效的减少一部分不必要的锁竞争带来的上下文切换

使用最少线程:避免创建不需要的线程,比如任务很少,但是创建了很多的线程,这样会造成大量的线程都处于等待状态,而且并发在某些情况未必会比串行快。

协程:在单线程里实现多任务的调度,并在单线程里维持多个任务间的切换

可以使用Lmbench3测量上下文切换的时长 vmstat测量上下文切换次数

 

2、线程安全

个线程共享数据时可能会产生于期望不相符的结果。

解决方案:同步机制

 

3、活跃性

某个操作无法继续进行下去时,就会发生活跃性问题。比如:死锁、饥饿等问题。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(并发编程)