Javascript多线程引擎(八)
Javascript 多线程项目, 做到现在已经快3个月了(加上前期准备编译原理和必要的文档), 该项目(js-engine)已经快进入尾声了, 现在该引擎的特性包括如下:
1. 全C语言代码(适合嵌入式)
2. 没有正则表达式(不能算是好的特性 , 以后有机会可以添加)
3. 没有Unicon支持(也不是好特性, 只是支持Ascii)
4. 没有lable with 语句了(相信大家在Javascript编程中用这两个特性把)
5. 解析器报错(可以调试语法是否发生错误, 具体的参数在JsParser.h 的几个宏)
6. 内置了几个基本类型[Object , Function , String , Boolean, Number, Array , Thread ,Global]
7. 支持异常系统(该特性 可以大大的减少return 之后,对函数判断的语句 ^_^ , 并且支持Stack 打印, 保证你能追踪到错误 , 最后也用来释放非托管资源)
8. 支持多线程: synchronzied关键字,可以对Object, 或者 函数声明前添加. 并且提供了join ,sleep, yield 线程特性函数. 帮助你 完成线程管理
9. 简易的NIO API构造函数,
JsThread JsNIO(JsThreadFn work,void* data, struct JsObject* o, int openEngine);
就可以开启额外的线程, 来完成IO工作, 完成后加入到调度队列中.
也可以开启另外一个引擎, 调度到新引擎的调度队列中.
10. 在该系列第一篇文章中,说引擎不支持垃圾回收^_^, 现在决定还是支持该特性,毕竟没有垃圾回收的功能,这个引擎可能永远停留在Github上了。
11. JIT, 这个难度比较大, 在完成垃圾回收后, 尽量提供该特性.
添加了垃圾回收模块后, 感觉现在这个引擎和lua之类的嵌入式引擎的差距不是很大了 ^_^.
接下来就添加几个多线程 test case:
Thread.join 测试用例:
测试结果:
Sleep.js 测试:
测试结果:
希望下次写文章的时候, 已经把垃圾回收做出来了~~
谢谢大家的支持.^_^
项目地址:
github.com/darkgem/js-engine