Mozilla正在SpiderMonkey中测试JavaScript并行计算

Mozilla正在SpiderMonkey中测试JavaScript并行计算

Mozilla正致力于实现JavaScript“并行(parallelism)计算”,以便充分利用硬件性能。Dave Herman是Mozilla Research的首席研究员和策略总监。近日,他在一篇博文中提到,他们正在其JavaScript引擎SpiderMonkey中进行相关实验。\

他们试图通过一种底层的、渐进的方法为JavaScript添加更加灵活和强大的并行计算原语。他首先指出:\

\

我正在谈论的不是“并发(concurrency)”……JavaScript的异步并发模型很受欢迎,也取得了成功,而且promisesES6 generators和即将到来的async/await正使它变得越来越好。

\

这里要探讨的是可以释放设备(GPU、SIMD指令及多内核处理器)潜能的并行计算。Web Workers已经在多核并行计算方面做了一些工作,但其工作线程是完全隔离的,只能通过postMessage进行通信。\

还有一种方案比较激进,就是像Nashorn那样将JavaScript变成一种完全多线程的数据模型。不过,那需要宿主Java程序小心地同步脚本,否则,JavaScript应用程序无法得到“运行至完成(run-to-completion)”的保证。而且,这个过程会伴随大量的标准化和实现工作,进而会带来生态系统方面的风险。\

另一方面,Mozilla Research和Intel Labs这些年来也在确定性并行计算API(有人称为River TrailPJS)方面做了一些实验。但他们选择了一种很困难的方法,因为很难找到一种足够通用的高级模型能够适合各式各样的并行程序。\

于是,他们引入了SharedArrayBuffer类型。不同于PJS,它内置的锁定机制为工作线程带来了新的锁定形式,但同样地,部分对象也可能因此遭受数据争用。不过,与Nashorn不同的是,这种情况只会出现在选择使用共享内存作为后台存储的对象中。如果创建了一个不使用共享缓冲区的对象,那么可以确定,它永远不会出现数据争用。Dave表示,这是一种相对保守的方法,但应该能够满足许多应用场景的需求。实际上,几年前就有人探讨过这种方法。在去年的JSConf大会上,谷歌PNaCI团队的Nick Bray还演示了一个在Chrome中共享缓冲区的原型。\

目前,Dave及其团队正在SpiderMonkey中测试SharedArrayBuffer API,并且正在草拟它的规范Firefox每日构建版本中已经提供了原型实现,感兴趣的读者可以下载试用并提供反馈。


感谢郭蕾对本文的审校。

\

给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ)或者腾讯微博(@InfoQ)关注我们,并与我们的编辑和其他读者朋友交流。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/109535.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 域名解析 dns_一区新增风险区

    域名解析 dns_一区新增风险区1、DNSDNS(DomainNameSystem)是域名系统的英文缩写,是一种组织成域层次结构的计算机和网络服务命名系统,用于TCP/IP网络。2、域名系统DNS的作用通常我们有两种方式识别主机:通过主机名或者IP地址。人们喜欢便于记忆的主机名表示,而路由器则喜欢定长的、有着层次结构的IP地址。为了满足这些不同的偏好,我们就需要一种能够进行主机名到IP地址转换的目录服务,域名系统作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。因此,即使不使用域名

    2025年6月12日
    0
  • python修改ip地址_怎么更改电脑ip地址?基于 Python 爬虫的ip修改设计与实现

    python修改ip地址_怎么更改电脑ip地址?基于 Python 爬虫的ip修改设计与实现怎么更改电脑ip地址?基于Python爬虫原理的篮球鞋选择程序的设计与实现ip修改【摘要】伴随着篮球鞋工艺的进步及产业升级,多类型多种类的篮球鞋出现在大众的视野当中。与此同时,消费者对篮球鞋的选择也逐渐增多。针对篮球爱好者在篮球鞋认知存在选择局限性、认知局限性等问题,针对于市面上关于篮球鞋选择程序的空白,也为了可以让球鞋爱好者选择合适的球鞋,本文笔者尝试通过利用Python爬虫,定向抓取…

    2022年6月20日
    30
  • python 优雅退出_Python学习教程:Python 使用 backoff 更优雅的实现轮询

    python 优雅退出_Python学习教程:Python 使用 backoff 更优雅的实现轮询我们经常在开发中会遇到这样一种场景,即轮循操作。今天介绍一个Python库,用于更方便的达到轮循的效果——backoff。Python学习教程:Python使用backoff更优雅的实现轮询backoff模块简介及安装这个模块主要提供了是一个装饰器,用于装饰函数,使得它在遇到某些条件时会重试(即反复执行被装饰的函数)。通常适用于我们在获取一些不可靠资源,比如会间歇性故障的资源等。此外,装饰…

    2022年6月15日
    33
  • tcpdump抓包命令_tcpdump抓udp包命令详解

    tcpdump抓包命令_tcpdump抓udp包命令详解Tcpdum是Linux上强大的网络数据采集分析工具

    2022年8月20日
    9
  • webstorm 格式化代码及常用快捷键 

    webstorm 格式化代码及常用快捷键 webstorm格式化代码快捷键centOS下Ctrl+Shift+lwindows下Ctrl+Alt+lmac下Option+Command+l查找/代替快捷键说明ctrl+shift+N通过文件名快速查找工程内的文件(必记)ctrl+shift+alt+N通过一个字符快速查找位置(必记)ctrl+F在文件内快速查找代码F3查找下一个shift+F3查找上一个ctrl+R文件内代码替换c…

    2022年6月11日
    182
  • rtsp 获取视频流 java_Java获取rtsp视频流,实现rtsp流预览功能,并将视频流每帧保存成图片…

    rtsp 获取视频流 java_Java获取rtsp视频流,实现rtsp流预览功能,并将视频流每帧保存成图片…先展示maven依赖吧,就一个javacvorg.bytedecojavacv-platform1.5.1pom然后就是测试类publicstaticvoidtestzc()throwsFrameGrabber.Exception{Stringrtsp=”获取的对应rtsp流”;FFmpegFrameGrabbergrabber=FFmpegFrameGrabber.crea…

    2022年10月9日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号