你那个 task.cs 在其它语言里面也有,主要功能是在协程语义上面实现调度。有空你可以去翻一下 python 的源代码。现在都是语言或者一个底层库先支持协程,反正就是一个函数能跳转到另外一个函数执行再跳回来,上面再包一层又一层。c# 和 python 都是如此,没啥稀奇的。
唯一的区别可能是 python 的所有协程都跑在一个线程里面。而 go 和 c# 都选择让协程可以自由在线程间调度。
【 在 leadu (leadu) 的大作中提到: 】
: 我帮你搜到源代码了好吧
https://github.com/Microsoft/referencesource/blob/master/mscorlib/system/threading/Tasks/Task.cs: 函数式语言社区出的东西,直接把协程first class化了,whenany内部就是个continuewith的事,挂个钩子或callback能有几行代码。
: 数据结构水平够的话,会知道所有可能冲突东西并不一定需要线程间通信
: ...................
--
FROM 140.224.34.*