关于js中的单线程和异步事件同操作系统的生产者消费者模型的理解

时间:2023-01-20 20:57:42

今天学习js,用到了window下面的setTimeout和setInterval两个方法有一些理解。这里用到了操作系统原理里面的生产者和消费者模型。这里有以下几个观点:

1、js引擎执行js代码的时候是单线程的,即同一时刻只会有一个进程执行JS代码

2、JS中的异步通信和定时是由另外的线程实现的,脱离js线程上下文

3、js执行的操作类似于生产者和消费者模型

关于js中的单线程和异步事件同操作系统的生产者消费者模型的理解

以下图是说明了js引擎和定时器引擎的关系:

关于js中的单线程和异步事件同操作系统的生产者消费者模型的理解


要说明下,以上js代码是body标签上面onload=“init()“,首先执行init()方法,执行到setTimeout(showAd,1000)的时候定时器线程会开始定时,1秒后将showAd回调函数任务放进事件队列中,,这时js线程处于空闲状态,然后就从事件队列拿showAd方法进行执行。showAd方法执行过程会启动setInterval方法,定时器线程也开始定时,同时js线程代码向下执行,执行完成后js引擎处于空闲状态。200000毫秒后,定时器线程将hideAd任务放进任务队列中,这时空闲的js引擎就调用hide方法向下执行。后面调用clearInterval()方法,通过上面函数返回的定时器id来关闭定时器。执行结束。



参考链接:

http://blog.csdn.net/yczz/article/details/7014907


http://www.cnblogs.com/woxihuanni/p/5736121.html