我最近被问到.NET WebAPI的面试问题,问题是这样的.
采访者:
将
async添加到WebAPI控制器操作的方法签名中有什么好处吗?没有执行任何异步操作吗?
我的答案是:
不,因为方法中没有阻塞代码,这意味着控制器操作应该在线程池中在自己的线程中同步运行。对吗?
采访者:
不,其实不是。
我在网上搜索了15到20分钟,想找到一个确切的答案,但对答案并不完全满意.那么,我是对的还是面试官是对的?
为了进一步澄清这个问题:在这种情况下,加载测试WebAPI控制器操作的性能会更好吗?仅仅因为它在签名中有一个异步关键字位置,即使其中没有异步代码?
发布于 2018-06-28 21:44:29
async修饰符本身不起任何作用。
来自文档
如果
async关键字修改的方法不包含await表达式或语句,则该方法将同步执行。编译器警告您注意任何不包含async语句的await方法,因为这种情况可能表示错误。
发布于 2018-06-28 22:00:35
您是正确的,没有async的await将是一个在当前线程上运行的Task (而不是一个新线程),直到结束时它基本上=同步运行。
如果您真的想要考虑到一切,那么将其标记为异步将增加创建Task的完全可忽略的开销。
https://stackoverflow.com/questions/51091546
复制相似问题