Javascript的并行运算实现代码

 更新时间:2010年11月19日 21:22:06   作者:  
随着多核cpu的普级,并发/并行多线程运算在主流的编程语言越来越流行,而在目前Javascript实现中还看不到在语言方面支持多线程,现在Javascript如此流行,真希望今后会在语言的层面有很大的变化.
下面我就个人观点猜测一下,并行运算将会怎样支持前端javascript的.

1 不太可能的进化

显示线程的支持
如果在Javascript中支持显示线程,那么可能是一种灾难,目前的浏览器解析Javascript并执行都是在浏览器的ui线程中工作的.
比如你可以在Javascript中运行while(true),这时浏览器界面就会停止响应.或者通过我之前的文章(编译Javascript引擎,为JavaScript提供睡眠功能:http://www.cnblogs.com/ioriwellings/archive/2010/08/16/1800416.html)了解UI界面被阻塞的过程.
另外如果显示支持线程必然也会支持线程间数据同步的同步原语功能,那就会出现这样的问题:
在一个函数中获取锁,而在另一个函数中释放锁,但是如果另一个函数出错怎么办,或者另一个函数是从另一个文件中引用的,又碰巧那个文件由于某些原因(网络问题,编码问题)没有加载进来,这时就会发生死锁.
所以根据上面的一些原因,在JavaScript支持显示线程还不太现实.

2 有可能的进化

隐式的并行支持
类似于openMP的宏指令,
下面代码声明并行运算FOR循环:
复制代码 代码如下:

#pragma omp parallel for
for (i = 0; i < N; i++)
  a[i] = 2 * i;

这种方式可以避免前面遇到的各种麻烦,并行的运算被托管于Javascript引擎内部,所以Javascript引擎有更多的空间处理优化这些并行运算,比如在内部调用openMP,Intel TBB的并行功能.
所以我推测这种方式将会很可能被采用.

3 处理并行异常

由于Javascript代码被隐式托管于并行线程处理,所以你可能不会马上得到某个线程的异常状态,而是要等到全部的线程运行结束后才会知道某些代码出现异常.

4 调试器的进化

会产生支持线程感知的Javascript调试器,能够分析每个线程中的信息,并且能够冻结/恢复某个线程的运行.
当然了,类似于firebug这样的用Javascript脚本写的调试器也将会有更大的提升,但是我想更理想的还是本地应用程序的调试器将会成为主流,比如:visual studio.

5 结语

  并行运算将会影响前台Javascript的执行性能,很多用Javascript写的前台效果,Javascript游戏的性能将得到改变与提升. 可是我会看到javascript的这种转变吗?

如果实在等不到,还是可以编译现有的js引擎,并添加并行运算接口,然后自已发布浏览器,让客户下载,多核的功能还是可能利用到的.

但是还要兼容现在javascript规范,不然其它浏览器将不能识别你的代码,所以就需要在js引擎内部对原有串行代码分析,而且要准确,将可以转换为并行的代码进行优化.我想这个任务还是很坚巨的.

相关文章

  • 又一款js时钟!transform实现时钟效果

    又一款js时钟!transform实现时钟效果

    又一款js时钟!这篇文章主要为大家详细介绍了transform实现的时钟效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-08-08
  • JSON与String互转的实现方法(Javascript)

    JSON与String互转的实现方法(Javascript)

    下面小编就为大家带来一篇JSON与String互转的实现方法(Javascript) 。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧,祝大家游戏愉快哦
    2016-09-09
  • js中回调函数的学习笔记

    js中回调函数的学习笔记

    这篇文章主要介绍了js中回调函数的相关知识,需要的朋友可以参考下
    2014-07-07
  • JavaScript日期格式化技巧分享

    JavaScript日期格式化技巧分享

    在 JavaScript 中,日期和时间的处理与格式化是非常常见的需求,JavaScript 提供了内置的 Date 对象用于操作日期和时间,但它的格式化功能较为有限,为了更方便地格式化日期,通常需要结合一些额外的工具或库,本文涵盖了从基础到进阶的日期格式化技巧
    2024-10-10
  • nodejs实用示例 缩址还原

    nodejs实用示例 缩址还原

    nodejs最近好红火,我也趁寒冷天气在nodejs的火炉边取暖一下。缩址还原实现代码。
    2010-12-12
  • 原生js实现贪食蛇小游戏的思路详解

    原生js实现贪食蛇小游戏的思路详解

    这篇文章主要介绍了原生js实现贪食蛇小游戏的思路详解,,文中给大家写出了注释,帮助大家理解代码,需要的朋友可以参考下
    2019-11-11
  • JavaScript实现捕获鼠标坐标

    JavaScript实现捕获鼠标坐标

    这篇文章主要为大家详细介绍了JavaScript实现捕获鼠标坐标,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-04-04
  • JavaScript地图拖动功能SpryMap的简单实现

    JavaScript地图拖动功能SpryMap的简单实现

    SpryMap是一个独立的并且是轻量级的JavaScript类库,它不依赖于任何其他的JS框架
    2013-07-07
  • js实现图片左右滚动效果

    js实现图片左右滚动效果

    本文主要介绍了js实现图片左右滚动效果的实例,具有很好的参考价值,下面跟着小编一起来看下吧
    2017-02-02
  • JavaScript使用前缀树(trie树)实现文本高亮

    JavaScript使用前缀树(trie树)实现文本高亮

    这篇文章主要为大家详细介绍了JavaScript如何使用前缀树(trie树)实现文本高亮效果,文中的示例代码讲解详细,有需要的小伙伴可以参考下
    2024-04-04

最新评论