我正在使用async-await和tasks,但我无法理解一件事:
异步任务是在单独的线程中执行的吗?
正如msdn所说(Asynchronous programming):
The async and await keywords don’t cause additional threads to be created. Async methods don’t require multithreading because an async method doesn’t run on its own thread.
但是在ThreadPool类(ThreadPool Class)的描述中的备注:
Examples of operations that use thread pool threads include the following:
When you create a Task or Task object to perform some task asynchronously,by default the task is scheduled to run on a thread pool thread.
所以,现在我不明白异步任务是否使用单独的线程.请解释一下.谢谢.
解决方法 任务不一定代表额外的线程.如果等待任务,则将控制流返回给方法的调用方,直到“某人”将任务设置为已完成.
如果通过Task.Run()或Task.Factory.StartNew()启动任务,则传递给这些调用的 *** 作将在另一个线程上执行(不是新线程,而是来自ThreadPool的线程).
总结以上是内存溢出为你收集整理的c# – 异步等待和线程全部内容,希望文章能够帮你解决c# – 异步等待和线程所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)