半同步半异步线程池模式 (一)

 

Solution

半同步半异步模式分成三层:

同步层、异步层、同步队列

高层任务,比如数据库查询、文件传输,为了简化并行编程,同步任务在独立的线程或进程中运行。

底层任务,比如网络接口、服务中断,异步是为了实现高质量服务。

同步队列,是为了在同步和异步层进行任务同步。

 

Structure

半同步半异步模式中包含以下各部分:

同步任务层执行高层处理任务。同步层的任务运行在独立的线程或进程中,它们有自己的运行时栈和寄存器。因此,当执行同步操作时,比如I/O,它们可以阻塞。举例说,为了高层任务,应用程序可以使用read和write系统调用去执行I/O同步。

异步任务层执行底层处理任务,特别是来自多个外部的I/O。异步层的任务没有一个专用的运行时栈或寄存器。因此,当它们执行异步操作时不能无限期的阻塞。举例说,I/O硬盘和操作系统内核的进程协议,是典型的异步任务,通常在中断处理中。

队列层提供一个缓冲区在同步任务层和异步任务层之间。异步任务生产的消息缓存在同步队列中,同步任务顺序的取出消息,反之亦然。另外,同步队列层负责通知这一层中的任务开始执行,当消息从另一层中传送给它们时。

外部I/O源产生被异步任务层接收和处理的事件。例如,网络接口,磁盘控制器,终端对操作系统来说都是通用的外部I/O源。

 

类图描述:

 

参考文档:https://www.dre.vanderbilt.edu/~schmidt/PDF/HS-HA.pdf

猜你喜欢

转载自blog.csdn.net/zhuzitop/article/details/86715980
今日推荐