前言:
最近在学习golang,golang并发支持比较好,goroutine+channel这个思想,大大提高了并行效率。既然golang有这个特性,我在做一些多个子调用的时候完全可以使用channel来将串行调用更改为异步调用,大大提高运行效率。所以今天就来学习一下future模式。
1. 什么是future模式
我们经常在编程的时候,经常会在一个函数里面调用多个子调用的情况,这些子调用相互之间没有依赖,如果串行调用,会耗时很长,这时就可以使用future模式来进行开发。
基本原理:
- 使用chan作为函数参数
- 启动goroutine调用函数
- 通过chan传入参数
- 做其他可以并行处理的事情
- 通过chan异步获取结果
2. futrue好处?
future 最大的好处是将函数的同步调用转换为异步调用,适用于一个交易需要多个子调用且这些子调用没有依赖的场景。
工作流程图如下:
3. 样例
这里模拟查询数据库的操作,使用futurem模式进行开发