half-sync/half-asunc和leader/followers

245 阅读2分钟

half-sync/half-asunc(半同步/半异步模式)

在并发设计模式中,同步和异步与IO模型的概念不同

  • 同步是指程序完全按照代码顺序执行

图片.png

  • 异步指的是程序的执行需要由系统事件来驱动。常见的系统事件包括中断,信号等。

图片.png

按照同步方式运行的线程叫同步线程,按照异步方式运行的线程叫异步线程,异步线程的执行效率高,实时性强,这是很多嵌入式语言采用的模型,但异步线程编写代码比较复杂,比较难调试和扩展,而且不适合大量并发。同步线程相反,编码简单易于调试,,实时性强,效率较高。服务器需要较好的实时性,又支持并发的情况,可以使用半同步/半异步模式。同步线程处理客户业务,异步处理IO事件。

异步线程监听到客户请求后,就将其封装成请求对象并插入请求队列中,请求队列将通知某个工作在同步模式的工作线程来读取并处理该请求对象。

leader/followers模式

该模式是指多个工作线程轮流获得事件源操作,轮流监听,分发并处理事件的一种模式,在任意事件点,程序都仅有一个领导者线程,它负责监听IO事件,而其它线程都是都是追随者,他们休眠在线程池中等待成为新的领导者。当前的领导者如果检测到IO事件,首先要从线程池中推选出新的领导者线程,然后处理IO事件,此时,新的领导者等待新的IO事件,而原来的领导者则处理IO事件,二者实现了并发。