①并发型模式(半同步/半异步模式):

并发编程的目的是让程序“同时”执行多个任务。

并发模式是指I/O(输入/输出)处理单元和多个逻辑单元之间协调完成任务的方法,在服务器上主要有两种并发编程模式:半同步/半异步模式 和 领导者/追随者模式。

半同步/半异步模式的同步和异步
在这个模式中的同步和异步与I/O模型的同步和异步是完全不同的两个概念。在并发模式中,“同步”是指程序完全按照代码序列的顺序执行,“异步”指的是程序执行需要系统事件来驱动。

Tips: I/O模型的同步是指线程启动一个IO操作然后等这个操作结束才开始往下执行,而异步是指线程发送一个IO请求到内核,此时操作已经开始执行,但不必等待,可以去执行其他操作,等到异步程序执行完毕就会提醒你。

同步线程和异步线程的优缺点:
-同步线程的效率比较低,实时性差,但是逻辑简单。
-异步线程效率较高,实时性强,但是异步方式执行程序比较复杂,难于调试和拓展,不适合大量的开发。
-因此为了得到良好的实时性,又要求并发性的应用程序,同时使用同步线程和异步线程是一种相当不错的模式。

半同步/半异步模式:
在半同步/半异步模式中,同步线程用于处理客户逻辑,异步线程用于处理I/O事件。异步线程监听到客户请求之后就将其封装成请求对象并插入到请求队列中。请求队列将通知某个工作在同步模式的工作线程来读取并处理该请求对象。

并发型模式(领导者/追随者模式):

领导者/追随者模式:
这个模式是指 多个工作线程轮流获得事件源集合,并轮流监听、分发并处理事件的一种模式。

领导者/追随者模式执行流程:
-在任何时间,程序都有一个领导者线程,负责监听I/O事件。
-其他线程都是追随者,他们在线程池中等待成为新的领导者。
-当前的领导者如果检测到I/0事件,首先要从线程池挑选出新的领导者,然后他自己变成工作者去处理I/O事件。
-新的领导者监听新的I/O事件,如此循环。
-I/O事件处理完后,工作者就会变成一个追随者,直至再次被唤醒。

并发型模式和线程池模式
领导者/追随者模式的缺点:
极端情况下,当所有线程都变为工作者忙于处理客户端的请求,没有线程担任领导者的角色,此时客户端的请求会被拒绝。

②线程池模式:
这个模式首先启动一定量的工作线程。当没有请求的时候,所有线程都会处于等待状态,一旦有需求送达,就会唤醒某个线程来处理,处理后就会等待新的需求。

线程池模式的优点:
优点:
①抵消线程创建的开销,提高响应性;
②封装了工作者线程生命周期管理;
③减少销毁线程的开销。

此文章仅为自己的学习记录及知识整理,以下为参考文献。
两种高效的并发模式
设计模式-线程池模式

相关文章: