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
