请关注我的微信公众号
![](https://img.haomeiwen.com/i752311/0262bae944cdacc7.jpg)
个人微信公众号
技术交流群 (仅作技术交流):642646237
![](https://img.haomeiwen.com/i752311/8c3ec61411e9d39d.jpg)
请关注我的头条号:
![](https://img.haomeiwen.com/i752311/807e8ec13b68ff93.jpg)
使用并发的目的
- 为了让程序并行运行从而发挥多核的优势
- 若正确使用并发,程序还将获得及时响应、高效、容错、简单
并发的世界,并发的软件
世界是并发的,为了与其有效地交互,软件也应是并发的。
并发是系统及时响应的关键。
如果解决方案有着与问题类似的并发结构,就会简单许多:不需要创建一个复杂的线程来处理问题中的多个任务,只需要用多个简单的线程分别处理不同的任务即可。
分布式软件
地理分布型问题。软件在非同步运行的多台计算机上分布式地运行,其本质是并发。
分布式软件还具有容错性。
为了增强软件的容错性,并发代码的关键是独立性和故障检测。
独立性是指一个故障不会影响到故障任务以外的其他任务。
故障检测是指当一个任务失败时(原因可能是任务崩溃、失去响应或硬件故障),需要通知负责故障处理的其他任务来处理。
串行程序的容错性远不如并发程序。
七个模型——线程与锁
是其他模型的技术基础。
七个模型——函数式编程
![](https://img.haomeiwen.com/i752311/11aa920db1d8f93e.png)
其对并发编程和并行编程提供了良好的支持。
函数式编程消除了可变状态,所以从根本上是线程安全的,而且易于并行执行。
七个模型——Clojure之道分离标识与状态
七个模型——actor
适用于共享内存模型和分布式内存模型,也适合解决地理分布型问题,能提供强大的容错性。
七个模型——通信顺序进程(Communicating Sequential Processes,CSP)
表面上看,CSP模型与actor模型很相似,两者都基于消息传递。
不过CSP模型侧重于传递信息的通道,而actor模型侧重于通道两端的实体,使用CSP模型的代码会带有明显不同的风格。
七个模型——数据级并行
七个模型——Lambda架构
Lambda架构综合了MapReduce和流式处理的特点,是一种可以处理多种大数据问题的架构。
网友评论