Bil*_*ani 7 c# asp.net multithreading asynchronous c#-4.0
好吧,让我试着把它放在句子里......
让我们考虑一个例子,我创建一个async方法并用await关键字调用它,据我的知识告诉我,
问题1:它会回到主线程还是新线程?
问题2:如果异步方法是CPU绑定的还是网络绑定的,它会有什么不同吗?如果有,那是什么?
问题3:假设这是一个CPU绑定方法,我实现了什么?我的意思是 - 主线程已经发布,但同时,线程池中使用了另一个线程.重点是什么 ?
async不会启动新线程.也没有await.我建议你阅读我的async介绍帖并跟进底部的资源.
async不是并行编程; 它是关于异步编程的.如果需要并行编程,则使用任务并行库(例如,PLINQ Parallel,或者 - 在非常复杂的情况下 - 原始Tasks).
例如,您可以使用一个async执行I/O绑定操作的方法.在这种情况下不需要另一个线程,也不会创建任何线程.
如果你有一个CPU绑定方法,那么你可以Task.Run用来创建一个Task在线程池线程上执行该方法的等待.例如,您可以await Task.Run(() => Parallel...);将某些并行处理视为异步操作.