我对这个MVC里面, await xxasync()的想法比较混乱了。
求朋友们下面2个问题 分别给一些 自己的独特深层次见解。
问题1:
比如有这个场景: 方法A里面 分别异步开3个线程去执行耗时的查询,然后 Thread.waitAll之后统一返回3个结果给浏览器。
代码:
ManualResetEvent handlerCancelTagUsedBulk = new ManualResetEvent(false); _threadWaits.Add(handlerCancelTagUsedBulk); Task.Run(() => { _tagUsedRepository.CancelTagUsedBulk(userid, caseid, true); _tagUsedRepository.SaveChanges(); handlerCancelTagUsedBulk.Set(); }); ManualResetEvent CancelFavouriteBulk = new ManualResetEvent(false); _threadWaits.Add(CancelFavouriteBulk); Task.Run(() => { _myFavouriteRepository.CancelFavouriteBulk(userid, caseid, true); _myFavouriteRepository.SaveChanges(); CancelFavouriteBulk.Set(); }); //等待所有线程结束 if (_threadWaits.Count > 0) { WaitHandle.WaitAll(_threadWaits.ToArray()); return true; } else return false;
await xxAsync()或者xxAsync()异步用法可以代替上面 写法吗?貌似一个是 CPU角度出发,一个是业务角度出发?
问题2:
public async Task<ActionResult> Index(Guid pId)
{
}MVC的Action标明为异步,这个从CPU角度怎么解释?
Mark~
CPU角度一样。程序角度就内外层的不同