【发布时间】:2015-11-10 15:58:03
【问题描述】:
我是 C# 中的 TAP 和 TPL 的新手,在谷歌搜索和阅读一些材料后,我无法理解异步任务是如何执行的。(尤其是在哪个线程上) 请帮助我从以下两个选项中了解哪一个是正确的:
如果异步任务在调用它们的同一线程上执行,那么如果我创建 1000 个任务并且它们都将通过时间切片在同一线程上执行呢?如果不是这样并且任务在不同的线程上执行,那么它与多线程(并行执行)有何不同?
【问题讨论】:
-
我认为
asyncawait比并行库慢,它是为了让你的 UI 非阻塞而不是大量并行操作。创建Tasks 也有一些开销,所以我认为创建大量它们不是一个好主意。此外,任务不会创建新线程,而是使用线程池。 (还有一件事我之前弄错了 -async本身并没有做任何自动的Task/Thread创建) -
@kirotab 确实我将异步与任务创建混淆了;)
标签: c# .net asynchronous async-await task-parallel-library