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

室内设计网站界面网站建设新闻发布注意事项

室内设计网站界面,网站建设新闻发布注意事项,北京安卓app开发公司,新网站seo怎么优化一 进程与线程 线程是进程执行的最小单位,进程是系统分配任务的最小单位。 一个进程可执行最少一个线程。线程分为子线程和主线程。 主线程关闭则子线程关闭。 二 浏览器进程 浏览器是多进程多线程应用。 进程包括: 浏览器进程 负责程序交互渲染…

一 进程与线程

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

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

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

二  浏览器进程

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

进程包括:

  • 浏览器进程 负责程序交互
  • 渲染进程 负责执行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.15wanjia.com/news/161985.html

相关文章:

  • 网上做网站广告投放wordpress5.0汉化版
  • 租赁商城手机网站开发flash网站模板修改
  • 网站开发托管协议公司网址要收费吗
  • ui网站设计模板wordpress建站教程书推荐
  • 购物网站logo薛城网站建设
  • WordPress搭建手机网站WordPress直接调用头像地址
  • 做商城网站需要什么条件白帽seo公司
  • 菏泽哪里有做网站的做一个网页一般多少钱
  • thinkphp做网站阿里云 wordpress搭建网站
  • 网站开发高级工程师专业杭州seo工作室
  • 住建局官网网站如何制作手机网页最简单的方法
  • php部署网站辽宁工程建设信息网诚信库
  • jsp 做网站需要什么软件网站开发cms
  • 郑州影楼网站建设html编辑器安卓汉化版
  • 90设计网站是不是没有视频模板自己做的网站网页错位
  • 重庆网站网络推广wordpress获取分类id
  • 建站网站教程视频教程重庆公司章程电子版在哪里下载
  • 个人网站平台wordpress无法设置中文字体
  • 制作app网站网上商城开发价格
  • 满洲里建设局网站首页网站关键词设几个
  • 网站用小程序最新新闻热点事件2023年4月
  • 网站推广意识薄弱宿迁大型三合一网站开发
  • 车床加工东莞网站建设皖icp网站建设
  • 电子商务网站建设评估工具江苏建筑工程信息网站
  • 如何网站建设 需要详细的步骤纬天建筑工程信息网
  • 哪些网站用echarts做的商务网站建设 视频
  • 福州高端网站建设网页设计要学所有软件吗
  • 如何设置网站关键字建设网站如何挣钱
  • 永州网站建设多少钱关于做情侣的网站的图片素材
  • 邢台网站建设地方php班级网站建设