当前位置: 首页 > news >正文

一学一做专题网站交互设计网站推荐

一学一做专题网站,交互设计网站推荐,wordpress发微信公众号,中创动力网站建设一 进程与线程 线程是进程执行的最小单位,进程是系统分配任务的最小单位。 一个进程可执行最少一个线程。线程分为子线程和主线程。 主线程关闭则子线程关闭。 二 浏览器进程 浏览器是多进程多线程应用。 进程包括: 浏览器进程 负责程序交互渲染…

一 进程与线程

线程是进程执行的最小单位,进程是系统分配任务的最小单位。

一个进程可执行最少一个线程。线程分为子线程和主线程。

主线程关闭则子线程关闭。

二  浏览器进程

浏览器是多进程多线程应用。

进程包括:

  • 浏览器进程 负责程序交互
  • 渲染进程 负责执行js等
  • 网络进程 负责网络进程加载

渲染主线程负责执行js、vue,解释css、html等。

一个标签一个渲染进程。

渲染主线程执行最多次。

有线程将任务放到渲染主线程执行队列,渲染主线程执行队列从消息队列中获取任务执行。

同一类型任务在同一队列中。

消息队列包括:

  1. 微队列 执行优先级最高
  2. 交互队列 执行优先级中
  3. 延时队列 执行优先级低 执行回调

三 js异步理解

js为单进程语言。渲染主线程中执行js。

使用同步则可能导致渲染主进程堵塞。

渲染主线程执行队列其他任务无法执行。

浏览器采用异步方法可避免堵塞。

具体方法:

  1. 任务执行时,主线程将任务交给其他线程执行,主线程继续执行后续代码。
  2. 任务中回调函数,包装为任务,加入到延时队列中,待主进程执行。

以上方法最大限度保证单进程的流畅运行。

"主线程将任务交给其他线程执行"可以解释为,执行代码时,有线程将不同任务放到不同队列,根据队列执行优先级,主线程执行完全局任务后,获取任务执行。

交互事件任务进入交互队列。

Promise.resolve().then(function(){}) 将任务放入微队列。

三 js事件循环

渲染主线程循环执行,各个队列的任务,事件循环又叫消息循环。

类似于后端消息队列,有守护线程监听队列,其他线程执行对应数据,监听到有新数据就执行。

浏览器中开始死循环,执行消息队列中的任务,其他线程将任务插入队尾。

同类型的任务必须在同一队列,不同的任务应属于不同队列。

不同队列执行的优先级不同,微队列必须再存且执行优先级最高,其他队列优先级由浏览器自行决定。

四 js定时器是否精准

不精准

  1. 硬件没有原子钟
  2. 操作系统计时函数偏差,js计时执行操作系统函数
  3. 计时器实现时嵌套层级超过5层,则带有4毫秒时间差
  4. 受渲染主线程事件循环影响,计时器的回调在延时队列中,只能在渲染主线程空闲时运行,因此有偏差

原子钟为一个硬件设备,目前有芯片级原子钟。

国产芯片级微型原子钟:多领域应用,市场前景广阔!-电子发烧友网

五 示例

例:

const btn = document.getElementById("btn")function clickf(event){setTimeout(function(){console.log("setTimeout1")},0) Promise.resolve().then(function(){console.log("Promise1");})}btn.addEventListener('click', clickf(event));setTimeout(function(){btn.click(); },0)  Promise.resolve().then(function(){console.log("Promise2");})function sleep(times){const date = Date.now();let currentDate = null;do {currentDate = Date.now();} while (currentDate - date < times);}function showaf(){let a=1console.log(a)}function showa(func){if (typeof func === 'function') {func(); // 执行回调函数}}function settimeout1(){console.log("setTimeout2")Promise.resolve().then(function(){console.log("Promise3");})console.log("setTimeout3") }setTimeout(settimeout1,0) showa(showaf)sleep(1000)let b=2console.log(b) 

输出结果

调用顺序如下:

先是全局代码执行,依次推入延时队列任务1、微队列任务1、延时队列任务2。

根据推入顺序和队列的优先顺序,依次执行微队列任务1,延时队列任务1,延时队列任务2。

之后类推。

参考:

事件循环那点事_计算机硬件没有原子钟怎么理解-CSDN博客

 

http://www.yayakq.cn/news/15403/

相关文章:

  • 海南城乡建设厅网站建筑设计师专业网站
  • 物流网站给做软件河南网站网络营销推广
  • 帮建网站局网站建设管理整改情况
  • 揭阳自助建站软件上海奉贤 网站建设
  • 网站建设的平台分析微信手机网站设计
  • 摄影师签约有哪些网站如何自己做优惠券网站
  • 展示网站建设价格设计工业
  • mc网站的建设建筑工程网上流程工作失误
  • 网站的作用和意义搭建wordpress写不进去
  • 互站网官网武安市网站建设费用
  • 江西网站制作公司wordpress相关网站
  • 做网站现在用什么语言网站建设什么是开发实施实施
  • 项城网站制作多少钱在线培训课程
  • 国外设计文章的网站最好的互联网公司
  • 南通经济开发区城乡建设局网站永城房产网
  • 海南响应式网站建设方案大华建设项目管理有限公司网站
  • 北京网站建设公司服务有哪些页面模板是需要原创功能才能有吗
  • 茶叶flash网站新手学做网站
  • 做淘宝还是京东还是做网站网站开发工具c
  • 百元做网站网站的后缀
  • 搜狗网站收录上海做网站要多少钱
  • 如何查看网站开发商通州微网站优化
  • 重庆网站建设 公司wordpress不能写文章
  • 新网站建设都需要哪些网站建设推广优化公司
  • 做网站卖游戏装备格尔木网站建设公司
  • 网站正在建设中html网站怎样做排名
  • 如何拷贝服务器里面网站做备份长沙房产政务信息网
  • 服务器网站建设流程图wordpress显示相关文章
  • 建设企业网站企业网上银行登录官网网站推广的主流方法
  • 广州住房和建设局网站动画专业大学