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

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

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

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

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


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


要说明下,以上js代码是body标签上面οnlοad=“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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值