我多次听过这种说法,但我个人认为这没有多大意义.我认为人们在实践中将JavaScript作为语言规范和JavaScript混淆(浏览器,节点等).当然,在大多数情况下,JavaScript是在单线程环境中执行的; 但AFAIK在语言规范中没有任何要求它.我认为这就像说Python被"解释",而实际上它完全是一个实现问题.
那么,说JavaScript是一种"单线程"语言是否准确?
通过JavaScript你似乎意味着ECMAScript.
浏览器中已经存在多线程,由Web工作者构建,并且基于强大的数据隔离:工作者只通过消息传递进行通信,没有任何共享.
如果你想要更复杂的多线程,数据共享,那么现在看起来不可能.ECMAScript中的任何内容都没有明确禁止多线程,但是没有多线程就无法进行多线程处理
事实上ECMAScript不包含多线程这一事实足以阻止它支持它(除了已经完成的消息传递隔离多线程,但它是一种非常有限的多线程).
你必须意识到这一点
为什么我说你很少使用它?因为大多数IO阻塞任务(文件读取,请求,数据库查询等),大多数低级任务(例如图像解码或页面呈现),大多数UI管理(带事件队列),大多数调度(超时和间隔)在外面完成.
多线程行为在 HTML5 和 Node.js 中都可用,但是 Javascript 语言中没有本机线程 API,所以我猜你的人为问题的答案(当然,我的意思是,以最好的方式)是“是的,Javascript 是一种单线程语言。”
| 归档时间: |
|
| 查看次数: |
907 次 |
| 最近记录: |