Javascript的并行运算实现代码


Posted in Javascript onNovember 19, 2010

下面我就个人观点猜测一下,并行运算将会怎样支持前端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引擎内部对原有串行代码分析,而且要准确,将可以转换为并行的代码进行优化.我想这个任务还是很坚巨的.

Javascript 相关文章推荐
单元选择合并变色示例代码
May 26 Javascript
浅谈JS继承_寄生式继承 &amp; 寄生组合式继承
Aug 16 Javascript
node.js实现快速截图
Aug 27 Javascript
WEB开发之注册页面验证码倒计时代码的实现
Dec 15 Javascript
.net MVC+Bootstrap下使用localResizeIMG上传图片
Apr 21 Javascript
vue.js中Vue-router 2.0基础实践教程
May 08 Javascript
利用Jasmine对Angular进行单元测试的方法详解
Jun 12 Javascript
基于JavaScript实现评论框展开和隐藏功能
Aug 25 Javascript
checkbox:click事件触发span元素内容改变的方法
Sep 11 Javascript
微信小程序使用progress组件实现显示进度功能【附源码下载】
Dec 12 Javascript
将Sublime Text 3 添加到右键中的简单方法
Dec 12 Javascript
elementUi vue el-radio 监听选中变化的实例代码
Jun 28 Javascript
js里的prototype使用示例
Nov 19 #Javascript
Google 静态地图API实现代码
Nov 19 #Javascript
javascript 窗口加载蒙板 内嵌网页内容
Nov 19 #Javascript
JS运行耗时操作的延时显示方法
Nov 19 #Javascript
function foo的原型与prototype属性解惑
Nov 19 #Javascript
高亮显示web页表格行的javascript代码
Nov 19 #Javascript
javascript tips提示框组件实现代码
Nov 19 #Javascript
You might like
开发大型PHP项目的方法
2006/10/09 PHP
关于文本留言本的分页代码
2006/10/09 PHP
番茄的表单验证类代码修改版
2008/07/18 Javascript
一些实用的jQuery代码片段收集
2011/07/12 Javascript
纯JavaScript实现HTML5 Canvas六种特效滤镜示例
2013/06/28 Javascript
javascript history对象(历史记录)使用方法(实现浏览器前进后退)
2014/01/07 Javascript
js动态修改整个页面样式达到换肤效果
2014/05/23 Javascript
JavaScript转换二进制编码为ASCII码的方法
2015/04/16 Javascript
老生常谈 js中this的指向
2016/06/30 Javascript
详解vue2.0 使用动态组件实现 Tab 标签页切换效果(vue-cli)
2017/08/30 Javascript
Jquery遍历筛选数组的几种方法和遍历解析json对象,Map()方法详解以及数组中查询某值是否存在
2019/01/18 jQuery
JS字典Dictionary类定义与用法示例
2019/02/01 Javascript
基于JavaScript实现轮播图效果
2021/01/02 Javascript
[05:46]DOTA2英雄梦之声_第18期_陈
2014/06/20 DOTA
Python的批量远程管理和部署工具Fabric用法实例
2015/01/23 Python
Python多线程编程(四):使用Lock互斥锁
2015/04/05 Python
简单讲解Python中的字符串与字符串的输入输出
2016/03/13 Python
基于Python 的进程管理工具supervisor使用指南
2016/09/18 Python
Python对文件和目录进行操作的方法(file对象/os/os.path/shutil 模块)
2017/05/08 Python
解决Django数据库makemigrations有变化但是migrate时未变动问题
2018/05/30 Python
用Python解决x的n次方问题
2019/02/08 Python
Python嵌套式数据结构实例浅析
2019/03/05 Python
美国网上花店:JustFlowers
2017/02/12 全球购物
法国一家芭蕾舞鞋公司:Repetto
2018/11/12 全球购物
Laura Geller官网:美国彩妆品牌
2018/12/29 全球购物
英国屋顶用品和材料超市:Roofing Supplies UK
2019/08/24 全球购物
某/etc/fstab文件中的某行如下: /dev/had5 /mnt/dosdata msdos defaults,usrquota 1 2 请解释其含义
2013/04/11 面试题
酒店工作职员求职简历的自我评价
2013/10/23 职场文书
奶茶店创业计划书范文
2014/01/17 职场文书
企业安全生产承诺书
2014/05/22 职场文书
银行求职自荐书
2014/06/25 职场文书
政府个人对照检查材料
2014/08/28 职场文书
2014年行政后勤工作总结
2014/12/06 职场文书
六年级小学生评语
2014/12/26 职场文书
业务内勤岗位职责
2015/04/13 职场文书
导游词之台湾安平古堡
2019/12/25 职场文书