异步编程设计模式
来源:互联网 发布:中兴笔试编程题 编辑:程序博客网 时间:2024/06/11 02:44
异步化机制的模型演进
一、异步非阻塞调用模型
去掉调度和中断的情况,线程的执行被打断一般是由于两个原因:
1,与低速设备通信,如IO、网络通信、打印到屏幕等。
2,竞争资源,如内存、临界区、句柄等。
传统方式下,这些相关的接口都被设计成同步阻塞接口。
同步调用方式意味着调用者必须获取了调用的结果后才能继续下一步的处理,阻塞调用方式意味着在调用结果返回前调用者将被阻塞。
同步阻塞调用方式带来的问题是,步骤只能串行的执行,无法利用多处理器的优势,导致请求处理的延时增大,影响系统的吞吐量。
异步非阻塞调用方式采用后台线程和异步接口来解决此问题。
异步接口会两次返回给调用者,第一次是接口调用的同步返回,用于通知调用者该次请求已经被接收,第二次是调用结果的异步返回,用于通知调用者该次请求处理的结果。 -- 需要注意的是,两次返回的先后顺序是不能被假定的,在很多情况下调用结果的返回会先于接口调用的返回。
在调用异步接口时,被调用者生成新的后台线程,并将该次接口调用同步返回,此时的调用者还无法获取此次调用的结果,但由于该次调用已经返回,因此调用者可以并发的执行其他操作而不必等待此次请求的处理完成。
在新启用的后台线程里,被调用者将开始进行真正的处理过程,即使该过程中发生阻塞,由于阻塞发生在新的后台线程中,因而对调用者不会造成影响。
请求处理完成后,被调用者再将调用结果同步到调用者,通常可以采用回调函数或消息通信机制来实现,调用者获取了调用结果后,就可以进行进一步的处理了。
异步非阻塞调用方式可以提升流程并发度,充分发挥多处理器的优势,以降低系统的响应时延,提升系统的吞吐量。
- 异步编程设计模式
- 异步编程设计模式
- 异步设计模式
- 关于异步编程模式
- 理解异步编程模式
- step3-异步编程模式
- 异步编程模式学习
- 异步编程模式
- 服务器编程异步模式
- 网络编程学习_设计模式_半同步半异步模式
- JavaScript异步编程-Promise模式
- 异步编程几种模式
- Promise异步编程模式总结
- C#的异步编程模式
- 异步编程:基于事件的异步编程模式(EMP)
- “设计模式驱动编程”
- 编程设计模式
- 编程中的设计模式
- Java自定义日志输出文件
- Linux系统中的关机命令
- CSS实例(七):工具条效果
- LA4256 离散+超级汇点 通过连边转移状态
- fatal error C1189: #error : This file requires _WIN32_WINNT to be #defined a
- 异步编程设计模式
- dp+计数 poj-1037-A decorative fence
- 求质量分布均匀的n边形的重心
- 让AngelScript运行起来
- 2013 杭州赛区邀请赛
- 链表的头指针在函数里修改怎么没有用?
- processmaker如何将Process无须登录的Web Entry改为必须登录并与CAS集成做单点的Web App
- CSS实例(八):不用图片实现宽度、高度自定的圆角矩形
- APP STORE 付费验证(IAP)服务端验证全过程