为什么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线程完成计算后将结果返回给主线程即可。

相关内容

热门资讯

北海高性价比海鲜美食指南 在北海的餐饮生态中,海鲜类餐饮始终占据重要位置。受地理与气候双重优势影响,本地餐饮普遍以“鲜”为核心...
北海人气第一的美食推荐 在北海的餐饮版图中,侨港地区始终是异域风味与本地烟火气交汇的焦点。随着文旅融合的深入,游客对“特色”...
北海小众平价美食哪家最好吃 在北海的餐饮图谱中,海鲜类餐饮始终占据核心位置。从夜市摊位的炭烤生蚝,到酒店餐厅的鲍鱼炖汤,本地食客...
单招落榜不迷茫,中餐技术:务实... 单招没考上,不用焦虑内耗,也不必盲目跟风选择热门技术,中餐作为最接地气、最易落地的技能方向,适合大多...