核心:基于资源状态的调度方式的控制权问题:有锁无锁调度程序员
线程:基于内核的锁调度;编程
其它:应用层自我调度;服务器
并发编程
在过去的30年里,计算机的性能是在摩尔定律的推进下,从如今开始,这将由Amdahl定律决定。编写代码,有效地利用多个处理器能够是很是具备挑战性的。" -Doron Rajwan 多线程
Amdahl's Law:每一个程序都分为串行与并行部分,下降串行的比重,可提升程序的效率。架构
进行多核多服务器时代,并行并发模式更是对程序员的挑战,如今所谓的Thread Programmer世界上也是为数很少,由于线程表面上好像很容易,但在实际应用中真正应付大负荷运算时,原来的线程设计方案漏洞百出。并发
并发concurrency属于问题域(problem domain), 并行parallelism属于( solution domain)。并行和并发的区别在于有无状态,并行计算适合无状态应用,而并发解决的是有状态的高性能; 有状态要着力解决并发计算,无状态要着力并行计算,云计算要能作到这两种计算自动伸缩扩展。dom
并发主要是要解决资源争夺,并发通常发生在数据聚合的地方,只要有聚合,就有争夺发生,传统解决争夺的方式采起线程锁机制,这是强行对CPU管理线程人为干预,线程唤醒成本高,新的无锁并发策略来源于Java的NIO或Node.js,经过队列+单线程操做资源的方式巧妙避免了多线程,因为只有一个线程,在多核状况下增长了并行计算的机会。性能
并发模型分两种,并发基础线程和并发组件模型,并发组件模型让使用者接触不到基础线程概念,是一种简化。做为一个高级集成架构师,应该在程序范式的高级层次定义并发,基于组件级别的并发,而且尽量地避免涉及线程概念以及线程池等底层概念。云计算
实现并发的途径有两种,基于线程和基于事件,基于线程与基于事件的并发编程之争。url
https://www.jdon.com/46921