Javascript多线程引擎(八)

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

原文地址:https://www.cnblogs.com/tickobject/p/3632472.html