只有你用它解决实际问题后
来源:互联网 发布:网络设计培训 编辑:程序博客网 时间:2024/04/30 07:16
一项新技术或者一个新特性,只有你用它解决实际问题后,才能真正体会到它的魅力,真正理解它。也期待大家能够多分享解一些解决实际问题的内容。
在我们遭遇“黑色30秒”问题的过程中,切身体会到了异步的巨大作用(详见从ASP.NET线程角度对“黑色30秒”问题的全新分析),于是开始逐步地用async/await改造现有代码。
今天早上在将一个MVC Controller中的Action改为异步的时候突然发现——其中有7个方法调用可以并行执行。
public async Task<ActionResult> BlogPostInfo(string blogApp, int blogId, int postId, Guid blogUserGuid)
{
//7个方法无关联的方法调用
}
如果通过async/await实现了这7个方法的并行,性能将会提高几倍,真是一个意外的惊喜!
惊喜之后,则要面对这样一个问题——如何以最低的成本实现?
这7个方法其他地方也在调用,不想直接把这些方法改为异步的;即使可以改为异步的,也不想一路改到底,最后在数据访问层调用ADO.NET的异步方法。
。。。
接着在园子里发现了另外一个惊喜——Jesse Liu的博文(async & await 的前世今生)中的一张图片:
async/await实现并行
好帅的图!连执行顺序都标得清清楚楚。只要照着这张图,就可以轻松地用async/await实现并行。
需要注意的地方:
1)并行调用的目标方法必须是async的。
2)在并行期间,不能使用await。
以下是实现案例:
下面的代码是需要并行执行的7个方法中的2个:
在我们遭遇“黑色30秒”问题的过程中,切身体会到了异步的巨大作用(详见从ASP.NET线程角度对“黑色30秒”问题的全新分析),于是开始逐步地用async/await改造现有代码。
今天早上在将一个MVC Controller中的Action改为异步的时候突然发现——其中有7个方法调用可以并行执行。
public async Task<ActionResult> BlogPostInfo(string blogApp, int blogId, int postId, Guid blogUserGuid)
{
//7个方法无关联的方法调用
}
如果通过async/await实现了这7个方法的并行,性能将会提高几倍,真是一个意外的惊喜!
惊喜之后,则要面对这样一个问题——如何以最低的成本实现?
这7个方法其他地方也在调用,不想直接把这些方法改为异步的;即使可以改为异步的,也不想一路改到底,最后在数据访问层调用ADO.NET的异步方法。
。。。
接着在园子里发现了另外一个惊喜——Jesse Liu的博文(async & await 的前世今生)中的一张图片:
async/await实现并行
好帅的图!连执行顺序都标得清清楚楚。只要照着这张图,就可以轻松地用async/await实现并行。
需要注意的地方:
1)并行调用的目标方法必须是async的。
2)在并行期间,不能使用await。
以下是实现案例:
下面的代码是需要并行执行的7个方法中的2个:
0 0
- 只有你用它解决实际问题后
- 用python解决你的实际问题,忘记语言吧
- 用自定义函数解决实际问题
- 模板元编程 --- 用 MPL 解决实际问题
- 模板元编程 --- 用 MPL 解决实际问题
- 模板元编程 --- 用 MPL 解决实际问题
- 模板元编程 --- 用 MPL 解决实际问题
- 模板元编程 --- 用 MPL 解决实际问题
- 模板元编程 --- 用 MPL 解决实际问题
- 模板元编程 --- 用 MPL 解决实际问题
- 模板元编程 --- 用 MPL 解决实际问题
- 用循环控制语句解决实际问题
- 学会用循环结构解决实际问题
- 用最小堆解决一个实际问题
- 数据结构 - 用递归算法解决实际问题
- 用map集合巧妙解决实际问题。
- 循环结构解决实际问题
- 冒泡排序解决实际问题
- 新坐骑
- 首次面试来的总结
- cigarette
- java -jar 中文乱码
- 取消记录tableView选中效果
- 只有你用它解决实际问题后
- 华为成功须坚持开放
- Android 軟件權限知識普及
- Cocos Code IDE入门指南
- POJ训练计划2251_Dungeon Master(三维BFS)
- Java动态代理机制——Cglib
- 图--最短路径--迪杰斯特拉算法
- 【LeetCode】Sqrt(x)
- 南阳理工OJ_题目712 探 寻 宝 藏