永发信息网

JavaScript 如果拥有多线程能力会怎样

答案:2  悬赏:60  手机版
解决时间 2021-02-19 12:29
JavaScript 如果拥有多线程能力会怎样
最佳答案
javascript没有多线程,所以也不存在多线程同时运行的说法。平时写代码的时候需要考虑尽量避免线程阻塞。
比较好的方法就是尽量使用异步+回调的方式进行处理。
全部回答
JS本身是为GUI而生的语言,GUI生而是多线程的,但生而也是单线程的。因为竞争访问的问题,只有一个UI线程是一种安全的方式。比如C# WinForm中只允许一个线程访问GUI,其他线程需要以委托的形式来访问GUI。
JS曾经在Web GUI中表现良好,因为过去的Web GUI规模小,只要注意一些写法问题,不太容易遇到阻塞UI线程的问题,直到应用程序变复杂了才开始注意到这些问题。浏览器变得更快一定程度上延缓了这些问题,但是终究还是对并发的需求越来越大。
WebWorker是真多线程——当然我是说从实现上讲,它是多个线程,至于楼主所说的,没有共享全局变量、没有锁,我觉得没有必要太纠结。多线程是一种并发模型,并且也许是受众最广泛的一种。WebWorker用的是基于通讯的并发模型,类似于erlang、Go,用的是Share Nothing的哲学(虽然终究还是有SharedArrayBuffer),它们都是经过了工业级别考验的。
有了share那么必然会有竞争访问,于是就有了锁,这些都是自然而然的。但是,很明显,JS的发展倾向于share nothing,不然就干脆把整个global对象share了算了。
至于为什么留SharedArrayBuffer,我觉得这只能说是“给不给”这个东西,不是“要不要”这样用了。这就和Go有点像了,应为闭包的存在GoRoutine之间也可以share,于是它也提供了锁,提供了mutex,但是它所建议的哲学还是用channel,用CSP,于是大家通常也都还是这么用。用GoRoutine当线程用,让channel滚蛋,还是用锁,还是可以做并发编程啊,但是好像没人这么弄吧,哈哈。
多线程只是手段,并发才是目的,只要能实现目的,手段就是个方法论而已。
至于多线程和异步之间我感觉没有太直接的绑定关系吧,单线程可以异步,多线程也可以同步。
如果JS一开始就具有多线程的话,现今JS程序员可能会少一半吧(笑
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
异地能注销存折吗?
我老板让我在工作上温柔如水,以柔克钢是什么
火影中晓有一个成员是草忍的,他是谁?
“只要人人献出一点爱,世界会变成美好的人间
工程预算中钢材的基价怎么定?
长白朝鲜族自治县长白镇民主村村民委员会在哪
献血的作用和意义
【我受到了表扬】那次,我受到了表扬作文
手机写小说草稿箱备份云端了但云端没有,现在
中国人民保险临安支公司高虹营销服务部这个地
朋友推荐海参我怎么拒绝
业主在海口两套房,我向她买其中一套,需要交
建行分期通审核要多久
(一)根据以下资料,回答小题:甲公司从事建材
中国工商银行站前支行地址有知道的么?有点事
推荐资讯
为什么说:跳进黄河也洗不清.而不说长江啊?
请问手机游戏中下载的游戏不是全屏的 怎么样
王者荣耀什么英雄能单挑水晶
bowl bubbles的音标是什么意思
日益萎缩的近义词,日益萎缩的意思
金鑫综合批发商场我想知道这个在什么地方
电脑鼠标怎么由大小调节到上下
车险出一次险,下一年的车险有有影响吗?
更改错别字
出名的分销平台,除了阿里巴巴
成都有高原反应吗
深沙联网吧地址有知道的么?有点事想过去
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?