gpt4 book ai didi

javascript - 说 JavaScript 是一种 "single-thread"语言准确吗?

转载 作者:数据小太阳 更新时间:2023-10-29 05:10:27 25 4
gpt4 key购买 nike

这种说法我听过很多次,但我个人认为这不太有道理。我认为人们混淆了作为语言规范的 JavaScript 和实践中的 JavaScript(浏览器、Node 等)。当然在大多数情况下 JavaScript 是在单线程环境中执行的;但 AFAIK 语言规范中没有任何内容要求如此。我认为这就像说 Python 是“可解释的”,而实际上这完全是一个实现问题。

那么,说 JavaScript 是一种“单线程”语言是否准确?

最佳答案

您所说的 JavaScript 似乎是指 ECMAScript。

浏览器中已经有了多线程,使用 webworkers 构建,并且基于数据的强隔离:工作人员仅通过消息传递进行通信,不共享任何内容。

如果您想要更复杂的多线程处理和数据共享,那么现在看来不可能。 ECMAScript 中没有任何内容明确禁止多线程,但如果没有,您就无法进行多线程

  • 创建“线程”(在一般意义上,可以是协程)的工具
  • 用于同步访问的互斥体和设施
  • 低级别支持以确保例如属性更改不会在同时访问的情况下破坏数据。目前的引擎都没有设计出这种强度(是的,其中一些支持多线程,但是是独立的)。

事实上 ECMAScript 并未设计为包含多线程,目前足以阻止它支持它(除了已经完成的消息传递隔离多线程,但它是一种非常有限的多线程) .

你必须意识到这一点

  • 数据共享多线程非常昂贵(甚至不谈 DOM 上的同时操作)
  • 你很少会在 JavaScript 中使用它

为什么我说你很少使用它?因为大部分 IO 阻塞任务(文件读取、请求、数据库查询等)、大部分低级任务(例如图像解码或页面渲染)、大部分 UI 管理(使用事件队列)、大部分调度(超时和间隔)是在外面为你完成的。

关于javascript - 说 JavaScript 是一种 "single-thread"语言准确吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17542740/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com