几种并发编程模型开销(从大到小):
Process > Thread > Coroutine > Generator == Callback
从对机器的并行利用来说,却是完全相反的。
Process可以部署在不同机器上;
Thread需要在Process里面,往往是很多Thread在一个Process里面,它对多CPU利用还是比较充分的;
Coroutine在Thread里面运行,要利用多CPU,需要实现调度器;
Generator算是一种带有状态的Callback,或者是对象化的Callback,它们也需要运行在Thread里面,要利用多CPU,需要实现调度器;
为什么Generator比Coroutine要轻量一些?原因在于Coroutine是通过切换执行代码来完成的,每次切换需要保存所有寄存器再加载另一个Coroutine里面保存的寄存器状态。Generator和Callback一样,不需要这一步。
Python示例:
def foo():
for i in range(5):
yield i
for i in foo():
print i
假想的D代码:
generator!(int) foo() {
foreach(i; 0..5)
yield(i);
}
foreach(i; foo())
writefln(i);
D如何来实现?必须要在语言中实现,让它自动把栈上变量在堆上分配,就像Closure一样。
手工模拟也是可以的,比较逻嗦,和用Class模拟Closure是一样的。
新闻组里有个提案,可惜还没有实现啊:
http://www.digitalmars.com/webnews/newsgroups.php?art_group=digitalmars.D&article_id=41886
分享到:
相关推荐
赠送jar包:mybatis-generator-core-1.3.7.jar; 赠送原API文档:mybatis-generator-core-1.3.7-javadoc.jar; 赠送源代码:mybatis-generator-core-1.3.7-sources.jar; 赠送Maven依赖信息文件:mybatis-generator-...
MyBatis的Generator现在需要JRE 1.6或更高版本 增强功能 改变了注解提供Generator使用新的SQL生成器类从MyBatis的3.2。如果你必须在一个旧版本的MyBatis运行,设置在配置属性“useLegacyBuilder”为“true”。 问题...
mybatis-generator版本:mybatis-generator-core-1.3.7.jar 关于逆向工程自动生成dao层代码的功能,网上很多介绍的都是mysql版本的,而且介绍的都是在开发环境idea或eclipse中怎么使用,这里整理的是PostgerSQL版本...
mybatis-generator-config_1_0.dtd文件存在于mybatis-generator-core-1.3.2.jar包中,路径如下org/mybatis/generator/config/xml/mybatis-generator-config_1_0.dtd 可以设置开发工具的dtd配置,配置...
generator-master.zip
generator
mybatis-generator-1.3.5.zip
赠送jar包:mybatis-generator-core-1.3.5.jar; 赠送原API文档:mybatis-generator-core-1.3.5-javadoc.jar; 赠送源代码:mybatis-generator-core-1.3.5-sources.jar; 包含翻译后的API文档:mybatis-generator...
赠送jar包:mybatis-generator-core-1.3.7.jar; 赠送原API文档:mybatis-generator-core-1.3.7-javadoc.jar; 赠送源代码:mybatis-generator-core-1.3.7-sources.jar; 赠送Maven依赖信息文件:mybatis-generator-...
赠送jar包:activiti-image-generator-5.21.0.jar; 赠送原API文档:activiti-image-generator-5.21.0-javadoc.jar; 赠送源代码:activiti-image-generator-5.21.0-sources.jar; 赠送Maven依赖信息文件:activiti-...
form-generator集成到本地项目
MyBatis-Generator 离线安装 附带安装方法
mybatis-plus最新代码生成器项目源码 :mybatis-plus-generator.zip mybatis-plus最新代码生成器项目源码 :mybatis-plus-generator.zip mybatis-plus最新代码生成器项目源码 :mybatis-plus-generator.zip ...
赠送jar包:activiti-image-generator-5.21.0.jar; 赠送原API文档:activiti-image-generator-5.21.0-javadoc.jar; 赠送源代码:activiti-image-generator-5.21.0-sources.jar; 赠送Maven依赖信息文件:activiti-...
system generator 入门指导
利用mybatis的generator,可以生成mapper.xml 和mapper.java
赠送jar包:mybatis-generator-core-1.3.5.jar 赠送原API文档:mybatis-generator-core-1.3.5-javadoc.jar 赠送源代码:mybatis-generator-core-1.3.5-sources.jar 包含翻译后的API文档:mybatis-generator-core-...
form-generator表单设计器api文档,用于设计自定义组件
功能:针对图片字体,为Bitmap Font Generator自动生成配置文件 用法:1、制作图片,单个文字图片的命名必须以图片名字命名。如:图片内容为“1”命名为“1.png”,图片内容为“万”命名为“万.png” 2、将该...
QR Code Generator Plugin for Photoshop即PS的二维码扩展插件,就是用来生成二维码的。需要安装到PS的滤镜目录中,在启动PS后从从滤镜EVEnX中调出该滤镜,支持CS6以下版本,如果你的PS版本较新,你需要在安装...