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

怎么做信息采集的网站太原网站建设托管

怎么做信息采集的网站,太原网站建设托管,网站开发工程师年薪多少,网站gif图标1. JS 的单线程特性 JS 是单线程特性,这意味着所有代码都在一个线程上(即主线程)执行,同一时间只有一个任务在执行,其他任务都在等待。 这意味着即使有多个异步操作,它们的回调函数也会按顺序执行&#xff…

1. JS 的单线程特性

        JS 是单线程特性,这意味着所有代码都在一个线程上(即主线程)执行,同一时间只有一个任务在执行,其他任务都在等待

        这意味着即使有多个异步操作,它们的回调函数也会按顺序执行,不会出现多个操作同时修改共享数据的情况。

主线程的职责

        主线程负责执行所有的 JS 代码,包括同步代码、回调函数、事件处理程序等。

        主线程是单线程的,同一时间只能执行一个任务。

2. 单线程特性的核心-事件循环(Event Loop)

        事件循环是JS单线程模型的核心。它确保即使有异步操作,代码也是按顺序执行的。

2.1. 事件循环的工作原理

        事件循环不断检查主线程是否空闲,当主线程空闲时,从任务队列或微任务队列中取出任务并执行。

2.1.1 任务队列

        异步操作(如定时器、网络请求等)的回调函数会被放入任务队列中。

        当当前执行栈为空时,事件循环会从任务队列中取出任务并执行。

2.1.2 微任务队列

        微任务(如 Promise 的回调)的执行优先级高于任务队列中的任务。

        微任务会在当前任务执行完成后立即执行。

3. 虽是单线程,仍存在竞态条件的可能性

        尽管 JS是单线程的,但在某些情况下仍然可能出现竞态条件,如:

3.1. 多个异步操作的回调顺序不确定

        如果多个异步操作的完成时间非常接近,它们的回调执行顺序无法预测。

3.2. 共享状态的修改

        如果多个异步操作都修改同一个共享变量,可能会导致他们读取到的该变量的状态不一致。

4. 单线程如何实现并发效果

        首先明确,这个并发能力是由浏览器或 Node.js 的底层 C++ API 实现的,跟 JS 的单线程没有半毛钱关系,不要搞错了。

        现在来分析这种情况,我通过 while 循环依次发送 3 个异步请求,不要理所当然的觉得,JS 会发送完一个请求,接收到回调后,再发送下一个请求。

4.1. 异步操作的发起是同步的,会立即执行

        也就是说,JS 发完第一个异步请求就会接着发下一个,它才不会管你第一个异步请求的回调是否完成。(假如你第一个异步请求本身耗时较长,JS 又一直在发请求,搞不好等第一个异步请求完成,开始走第一个请求相应的回调函数逻辑时,JS 可能都已经发到第 N 个请求了。这种场景又常会使用 async/await 来强迫 JS 等待第一个请求。)

4.2. 异步操作的回调放进任务队列,由事件循环依次处理

         当请求完成回来后,开始走到请求的回调部分,JS 会把这些回调函数放进任务队列里,回调函数在任务队列中等待事件循环依次处理(这也是单线程特性的表现)。

4.3. 并发指的是底层 API 并发处理请求

        底层 API 的并发执行是独立于 JS 的,由浏览器或 Node.js 的底层 C++ API 实现,这些 API 可以确保异步操作本身可以高效、并行地执行,并不会阻塞 JS 的主线程。

4.4. 异步并发与 JS 的单线程逻辑并不冲突

        底层 C++ API 确保可以异步、并行的处理请求,但是每个请求的回调会被依次放在任务队列里,再相继在 JS 的单线程上按顺序执行。

5. 通过锁来控制并发时对共享变量的修改

        针对上述3.2,可以考虑增加一个锁变量,在每次操作该共享变量时,先检查锁变量的状态,确保只有一个回调在修改,即确保对共享变量的访问是互斥的。

http://www.dtcms.com/a/445093.html

相关文章:

  • 启东市住房城乡建设局网站免费造网站
  • 需要网站建设的是哪一类人太仓市建设招标网站
  • 天津市城乡建设网站网页制作基础教程使用spry构件
  • vi设计公司 焕识网站打开速度优化
  • 优秀网站推荐app设计网站推荐
  • 西安网站设计费用个人养老保险缴费查询
  • 网络推广和网站推广平台沈阳今天最新通知
  • 照片后期网站网站建立企业
  • 阿里云轻应用服务器 建设网站wordpress文章列表怎么折叠起来
  • 网站打开太慢什么原因怎么推广自己做的网站
  • 主题资源网站制作平台编程软件大全
  • 小程序app分销网站建设沧州手机建站哪家好
  • 网站后期的维护管理网络系统脆弱性的不安全因素
  • 如何建立内外网网站淮北专业三合一网站开发
  • 如何自己动手做网站深圳高端网站定制公司
  • 机械加工网站色彩搭配婚纱摄影网页制作
  • 住房和城乡建设部网站防烟排烟美发店网站源码
  • 住房城乡建设部网站职业资格做网站什么域名好
  • 站长统计app进入网址新版荆州建设网站
  • rails网站开发曲阜公司网站建设价格
  • 建行网站会员是什么做任务领q币网站
  • 企业网站设计模板自己做淘宝客是不是需要建网站
  • 备案网站制作仿牌外贸网站
  • 上海青浦区网站建设公司加盟类网站怎么做
  • 网站开发公司能不能去免费网站空间可访问
  • 网站地图无法生成网易企业邮箱和网易邮箱的区别
  • 网站被黑是什么原因深圳做网站的好公司有哪些
  • php企业网站程序四川建设工程交易信息网站
  • eclipse tomcat 网站开发德州专业网站制作哪家好
  • 创世做的网站源码房内设计