OneDay-并发编程的挑战

什么叫上下文切换?

       cpu通过时间片分配算法来循环执行任务,当前的任务在执行一个时间片后会切换到另一个时间片,但是在切换之前会保存上一个任务的状态,所谓的上下文切换就是一次任务从保存到在加载这一过程.

多线程一定快吗?

答案是不一定的.因为线程在有创建和上下文切换的开销.(ps:https://github.com/gxwanmei里面有测试代码,欢迎使用)

如何去减少上下文切换呢?

(1)无锁并发编程:当多线程竞争锁的时候,会引起上下文的切换,所以多线程处理数据的时候可以用一些方法来避免使用锁.例如,将数据的ID根据hash算法取模分段,不同的线程去处理不同段的数据.

(2)CAS算法.

(3)使用最少的线程.

(4)协程.

死锁:


避免死锁的常见方法:



最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容