BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

超越标准:Mono中的Continuation

| 作者 Jonathan Allen 关注 551 他的粉丝 ,译者 张龙 关注 12 他的粉丝 发布于 2011年3月31日. 估计阅读时间: 2 分钟 | 如何结合区块链技术,帮助企业降本增效?让我们深度了解几个成功的案例。

虽然Mono在大多数情况下都紧跟C#和Common Language Infrastructure规范,但有时候它也会超越他们。虽然诸如SIMD支持等特性是向后兼容于.NET的,但运行时支持的continuations却是Mono所独有的。

continuation类似于冻结的线程,如果你愿意还可以称其为快照。它包含了栈帧和局部变量,但与真正的线程不同的是它无法执行。C#的yield操作符就是continuation的一种简化形式,但yield只不过是编译器所玩的一个小把戏,它会创建一个状态机而并非通用的continuation。因此大多数情况下你需要运行时的支持才行。

Tomi Valkeinen对运行时支持的研究成果就是Mono.Tasklet API。它考虑到了通用的continuations,可以捕获到栈,同时又可以在必要的情况下恢复。值得注意的是,这种形式的continuation可以捕获到引用,但却无法捕获到这些引用所指向的堆中的对象。Tomi Valkeinen在Mono.Tasklet API的基础上构建了microthreading库。它包含了轻量级的线程,可以通过continuations和多任务共享单独的一个物理线程。

方才我们说“大多数情况下”,这是因为还有另一种构建通用continuation的方式。来自LindenLabs的Jim Purbrick构建了一个continuation系统,使用CIL进行了重写而非运行时支持。相对于Valkeinen的continuation来说,这是一种重量级的构建continuation的方式。但它不仅可以序列化栈,还可以序列化堆中的对象。这样就可以在另一台服务器上恢复continuation了,这对于Second Life的可伸缩架构是至关重要的。从长远来看,LindenLabs想要将这两种技术整合起来:使用Mono Tasklets实现快速的continuations,使用自己的技术实现需要序列化的continuations。

查看英文原文:Going Beyond the Standard: Continuations in Mono

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

我也有个类似的开源项目 by Shichao Liu

以前做网游的时候有过些研究,也有些成果。接下来一段时间应该要放一放了,所以希望感兴趣的朋友可以接着做下去。 项目在sourceforge上,叫Laputa。 里面大概有这么3部分,一些基础类库(随机数生成器,函数调用序列化等),快速序列化(反射然后DynamicMethod,缓存起来),一个无锁并行模型(核心项目是数据和线程的绑定,这样就不需要锁。争用可以用银行家算法对所有的微线程进行静态分析。执行起来基于无所队列,微线程执行中断,必要时序列化,传输到另外的线程中继续执行。)
已上传的代码都是可以执行,有一定功能性的了,但还未完工,测试也还不够多。我邮件robirdliu@gmail.com

Re: 我也有个类似的开源项目 by Shichao Liu

补充一下,这个玩意很适合做巨型网游(超大世界,不分线的那种)。也有针对虚拟世界(比方说网游)设计的远程对象代理模型(客户端可以半透明调用服务器方法,半透明是指含加密和超时功能;服务器会自动收集服务器上对象的状态变化然后发送给所有在客户端或其他服务器上的观察者们;事件也被映射到客户端)。详细的也可以QQ聊聊,124486320。 再补充一下,我已经不做网游了,所以很希望这个未完工项目有人能接着搞,这个思路还是很有前景的。

Re: 我也有个类似的开源项目 by 江天 皓月

牛人啊

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

3 讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT