前言 对于单线程来说,事件循环可以说是重中之重了,它为任务分配不同的优先级,井然有序的调度。让js解析,用户交互,页面渲染等互不冲突,各司其职。 我们书写的代码无时无刻都在和事件循环打交道,要想写出更流畅,我们就必须深入了解事件循环,下面我们将从规范中翻译和解读整个流程。 以下内容来自whatwg文 ...
分类:
其他好文 时间:
2020-07-24 16:41:29
阅读次数:
73
线程锁 自旋锁:为了不放弃CPU执行事件,循环的使用CAS技术对数据尝试进行更新,直到成功。 悲观锁:假定会发生并发冲突,同步所有对数据的相关操作,从数据就开始上锁。 乐观锁:假定没有冲突,在修改数据时如果数据发现和之前获取的不一致,则读最新数据,修改后重新修改。 独享锁(写):给资源加上写锁,线程 ...
分类:
编程语言 时间:
2020-07-22 11:25:38
阅读次数:
64
1、node事件循环 事件: const events=require("events"); emt=new events.EventEmitter(); function eventHandler(){ console.log("111"); console.log("222") } emt.on ...
分类:
其他好文 时间:
2020-07-17 13:36:38
阅读次数:
75
学习node之前,首先要安装node,去node官网安装比较node.js 8的稳定版本,然后学习 1.文件操作 在工作中会遇到文件操作,比如读文件,写文件,文件重命名,删除文件,以文件操作作为学习Node.js的起点。接下来会创建一些实用的异步操作文件的工具。 1.1 Node.js事件循环编程 ...
分类:
Web程序 时间:
2020-07-13 18:28:45
阅读次数:
73
宏任务: 当前调用栈执行的代码成为宏任务,(主代码块和定时器)也或者宿主环境提供的叫宏任务 这些任务包括: 渲染事件 用户交互事件(如鼠标点击、滚动页面、放大缩小等) JavaScript 脚本执行事件; 网络请求完成、文件读写完成事件 微任务: 当前(此次事件循环中)宏任务执行完,在下一个宏任务开 ...
分类:
其他好文 时间:
2020-07-12 14:19:25
阅读次数:
53
单线程解决高并发的思路就是采用非阻塞,异步编程的思想。简单概括就是当遇到非常耗时的IO操作时,采用非阻塞的方式,继续执行后面的代码,并且进入事件循环,当IO操作完成时,程序会被通知IO操作已经完成。主要运用JavaScript的回调函数来实现。 多线程虽然也能解决高并发,但是是以建立多个线程来实现, ...
分类:
编程语言 时间:
2020-07-10 18:48:27
阅读次数:
56
前言 我们都知道javascript是一门单线程、异步、非阻塞、解析类型脚本语言。 单线程 ?? 异步 ?? 非阻塞 ?? 然后还有 事件循环、消息队列,还有微任务、宏任务这些 这几天在掘金、知乎等论坛翻阅了不少大佬的文章,似乎了解到了一二,然后在这里把自己的体会总结出来,帮助大家快速理解,也能增加 ...
分类:
Web程序 时间:
2020-07-07 13:39:23
阅读次数:
75
js是单线程脚本语言,开发中了解代码执行顺序就显得格外重要,代码从上往下执行过程中 如果所有都是同步任务,将会造成严重的性能问题。 异步分为宏任务和微任务 宏任务(MacroTask) script全部代码、setTimeout、setInterval、setImmediate(浏览器暂时不支持,只 ...
分类:
其他好文 时间:
2020-07-03 15:13:44
阅读次数:
70
1. 事件循环和 Promise https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/EventLoop https://zhuanlan.zhihu.com/p/33058983 const s = new Date().getSecon ...
分类:
其他好文 时间:
2020-07-03 12:07:32
阅读次数:
62
Tornado的核心是什么?Tornado 的核心是 ioloop 和 iostream 这两个模块,前者提供了 一个高效的 I/O 事件循环,后者则封装了 一个无阻塞的 socket 。 通过向 ioloop 中添加网络 I/O 事件,利用无阻塞的 socket ,再搭配相应的回调函数,便可达到梦 ...
分类:
编程语言 时间:
2020-06-22 01:04:00
阅读次数:
95