为什么js引擎是单例

2019-01-19  本文已影响0人  刘程源

函数就是黑盒

一段函数,本身就是一个黑盒工厂,输入即原料,输出即产品

工厂分两种,加工型和生产型

生产型
原料拥有不可变性,可变的只有产品
比如水电燃这些通用原料,私自修改整体走向,会引起后续工厂的彻底混料
即只可以用,不可以改

此处指配置信息,回掉函数等

加工型
原料 == 产品
原料不可变的返例

在本例中,js引擎为工厂,原料为html具有两种模式
加工型 ->html操作
生产性 ->无html操作

多核需要指示灯

多个黑盒操作同一原料,这个模型类似与火车与轨道

轨道是原料,火车是工厂
每条轨道的运行只有一个方向,对轨道而言同一时间只能过一条火车
单个火车毫无问题,如何设计多个火车路段?
如果只是保证轨道运行不重复,那么轨道长度/火车长度 是否为最大运行火车运行数量?
当然不是火车运行具有安全距离,即当此时该轨道通过时,意味着前方Nm内都无火车运行,这里的设计就是指示灯,当火车通过是,指示灯红色,表示以下路段有车,请等待,当该路段火车通过后,指示灯绿色,表示该路段无车,可通过

总之,信号指示灯,肯定是成双成对出现的
而这个指示灯,就是程序中的锁

js引擎与渲染引擎的关系

一前一后两辆火车,没有指示灯
js对原料加工完毕后,渲染在对原料进行再次加工

如何实现多核

追加指示灯设计即可,使原料html可以分段执行,这意味着需要语法上的描述,即在语法上描述出,当前函数只操作如下html,且绝对操作范围外的html,意味着无法全局追加html

虽然恶心,但不能说不能

多厂设计的必要性

假设fps=60,每次渲染操作需要16ms内完成,针对16ms以内无意义,针对16ms以上,操蛋的语法难度可能会使以前的轨道全部重铺

题外话1. js引擎比较贵

在事件工厂中,收到指示后,是否可以执行建立一个js引擎部门对js进行处理?
当然不能,这个部门比你全公司都大,即js引擎很贵,全局有且只有一个

题外话2. js引擎处理使用率不高

js引擎的目的使修正html,展示丰富的页面,最终停留在让人看上,针对一个页面,如果不是做动画效果,js引擎工厂的出勤率不高

花大价钱整一个出勤率不高的厂,性价比太低,难道要动态新增销毁不成

js多作坊设计

js引擎将内部作坊分两种,加工型和生产型
生产型不依赖html,可单独执行
即追加内部生产型作坊,其余依然由总部处理
此时js工厂如下执行

针对html加工,针对无html处理,丢给生产作坊处理,html处理完成后,丢个渲染工厂
生产性作坊处理完后,重新丢个js厂

即对是否进行html操作做细分,以达到多厂的目的

将厂理解为线程等性质一样

总之

有内部解决方案,整体没有必要

上一篇下一篇

猜你喜欢

热点阅读