澄清.net中的任务

dba*_*nes 2 .net c# asp.net-mvc multithreading .net-4.5

我正在尝试理解.net中的任务,我理解的是它们比线程更好,因为它们代表需要完成的工作,当有空闲线程时,它只是被拾取并且工作允许完整的cpu到被利用.

我看到Task<ActionResult>了全新的mvc 5项目,我想知道为什么会这样?

总是这样做是否有意义,或者只是在功能中可以阻止工作时?

我猜测,因为这确实像一个线程,仍然有可能需要的同步对象这是正确的吗?

Ree*_*sey 5

MVC 5使用Task<ActionResult>它来完全异步.通过使用Task<T>,可以使用新的asyncawait语言功能来实现这些方法,这允许您以简单的方式使用MVC组合异步IO功能.

在使用MVC时,一般来说,Task<T>希望不会使用线程 - 它们将组成异步操作(通常是IO绑定工作).通常,在服务器上使用线程会降低整体可伸缩性.