为什么javascript设计为单线程?它又是如何解决单线程带来的问题的?
admin
2024-03-25 15:54:27

为什么javascript设计为单线程?我觉得这和它的应用场景有关。

这门语言最初的设计目的就是运行在浏览器上,用于处理DOM等工作,那么为了避免多个线程同时操作一个DOM之类的问题发生,单线程不失为一个良策。我觉得这也是设计者将javascript设计为单线程语言的一个很重要的原因。

虽然可以通过锁来解决上面的问题。但是这会因为引入了锁而为语言带来更大的复杂性。

单线程为javascript保证了执行顺序,也为javascript带来了一些问题,如阻塞问题,效率问题等。

阻塞问题javascript设计者的应对方案为将任务分为同步任务和异步任务,通过EventLoop规则来处理不同类型的任务,常用的promise、async/await即为其思想的实践。

效率问题javascript设计者的应对方案为webWorker,它可以开启新的线程进行工作,虽然其让javascript看起来变为“多线程”,但是webworker有诸多限制,比如其不能操作DOM,这也就避免了上面所说的多线程带来的问题,所以webWorker线程不能真正意义上算作单独的线程,它只是服务于主线程,所以javascript单线程这一特性毋庸置疑。

webWorker适用于单纯的大计算量的工作,在主线程中将要计算的数据传入一个webWorker线程,webWorker线程中使用算法计算,这样不影响主线程的任何工作,等到webWorker线程完成计算后将结果返回给主线程即可。

相关内容

热门资讯

生活太苦?来块红枣南瓜发糕:软... 闹钟响了三次,我挣扎着从床上爬起来。窗外的天还是灰蒙蒙的,城市尚未完全苏醒,只有远处偶尔传来的几声鸟...
金玉其外的茶,抵不过记挂你的人 前天晚上,一个年轻的朋友微信联系我。她说有人送了她一盒黄山毛峰,我知道她,现在的年轻人根本不喝茶,他...
一抹相承聚势拓新,梵净抹茶香溢... 5月31日上午,以“一抹相承,聚势拓新;梵净抹茶,香溢天下”为主题的2026抹茶大会,在贵州省铜仁市...
【成冠美食】2025—2026... 2026.6.1—2026.6.7 本周食谱 新鲜食材 科学搭配 一日三餐对孩子们的健康成长 有着至...