作为一名对探索“事物如何工作”感兴趣的 C# 程序员,我有兴趣更多地了解创造新事物的过程async特色工作。
我关注了 Eric Lippert 关于异步的优秀文章系列:异步博客文章
我不记得在任何地方看到过任何关于此功能的实现(在高级别上)的参考,除了“编译器正在为我们完成大部分工作”这一事实。
那么这个功能严格来说是编译器功能吗?编译器是否以某种方式重写代码,仅此而已?或者是否有其他东西(例如运行时支持)可以实现这一点?
不,这不对entirely在编译器中。它依赖于一些新的接口,例如INotifyCompletion和一些框架执行支持如AsyncTaskMethodBuilder。但我不认为需要进行任何 CLR 更改。
编译器做了很多工作,构建一个状态机 - 它只是引用状态机中的其中一些类型。哦,还有很多Task
主要出于性能原因对相关类型进行了重大修改。
我有一个系列博客文章最初是针对 CTP 编写的,但是only使用普通的 .NET 4 和一些我自己创建的类。它们不会对生产实施产生影响(因为随着时间的推移,事情会发生一些变化),但它们会让您对幕后发生的事情有一个总体印象。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)