proactor(前驱)模式

前驱模式(Proactor)是一种事件处理的软件设计模式,其中长时间运行的活动在异步部分中运行。当异步部分完成后调用相应的处理程序。


同步和异步

同步和异步是针对应用程序和内核的交互而言的。

同步:用户进程触发IO操作后,等待或者轮询查看IO操作是否完成。
异步:用户进程触发IO操作后,继续自己的工作,当IO操作完成后,用户进程会得到通知(执行一些操作)。

模型

在这里插入图片描述

这是一个简单的前驱模式的模型。

首先,主线程向线程池提交若干任务,线程池分配线程去处理这些任务,当某个任务处理完成后,将结果存入缓存区中,并通知该任务的处理程序去处理结果。

boost.asio

boost.asio中运用了前驱模式,封装了操作系统的select,poll,epoll,kqueue等机制,实现了异步I/O模型。

主线程调用相应异步操作函数向内核注册socket上的事件,并告诉内核数据缓存区的位置。当socket上的数据存入数据缓存区或者数据缓存区的数据被写入socket后,内核通知应用程序执行相应的操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值