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 相关文章推荐
关于document.cookie的使用javascript
Apr 11 Javascript
js类型检查实现代码
Oct 29 Javascript
cookie的复制与使用记住用户名实现代码
Nov 04 Javascript
js中hash和ico的关联分析
Feb 05 Javascript
用canvas 实现个图片三角化(LOW POLY)效果
Feb 18 Javascript
使用CSS+JavaScript或纯js实现半透明遮罩效果的实例分享
May 09 Javascript
javascript深拷贝和浅拷贝详解
Feb 14 Javascript
深入理解Angularjs中$http.post与$.post
May 19 Javascript
如何手动实现es5中的bind方法详解
Dec 07 Javascript
JS中创建自定义类型的常用模式总结【工厂模式,构造函数模式,原型模式,动态原型模式等】
Jan 19 Javascript
微信小程序wx.navigateTo中events属性实现页面间通信传值,数据同步
Jul 13 Javascript
vant实现购物车功能
Jun 29 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 文章调用类代码
2011/08/11 PHP
深入extjs与php参数交互的详解
2013/06/25 PHP
二进制交叉权限微型php类分享
2014/02/07 PHP
PHP封装返回Ajax字符串和JSON数组的方法
2017/02/17 PHP
javascript 常用代码技巧大收集
2009/02/25 Javascript
javascript 写类方式之九
2009/07/05 Javascript
jQuery 添加/移除CSS类实现代码
2010/02/11 Javascript
javascript 用记忆函数快速计算递归函数
2010/03/15 Javascript
jquery的键盘事件修改代码
2011/02/24 Javascript
javascript学习笔记(五)正则表达式
2011/04/08 Javascript
jQuery1.9.1源码分析系列(十六)ajax之ajax框架
2015/12/04 Javascript
jQuery实现简单的点赞效果
2020/05/29 Javascript
ES6中非常实用的新特性介绍
2016/03/10 Javascript
Angularjs中的事件广播 —全面解析$broadcast,$emit,$on
2016/05/17 Javascript
浅谈JavaScript中面向对象的的深拷贝和浅拷贝
2016/08/01 Javascript
js转html实体的方法
2016/09/27 Javascript
Javascript数组中push方法用法分析
2016/10/31 Javascript
整理一些最近经常遇到的前端面试题
2017/04/25 Javascript
angular.js指令中transclude选项及ng-transclude指令详解
2017/05/24 Javascript
实例讲解Vue.js中router传参
2018/04/22 Javascript
JavaScript设计模式之观察者模式与发布订阅模式详解
2020/05/07 Javascript
vue制作toast组件npm包示例代码
2020/10/29 Javascript
Python中为什么要用self探讨
2015/04/14 Python
python使用xlrd实现检索excel中某列含有指定字符串记录的方法
2015/05/09 Python
Python冲顶大会 快来答题!
2018/01/17 Python
Python使用装饰器模拟用户登陆验证功能示例
2018/08/24 Python
Python编程中flask的简介与简单使用
2018/12/28 Python
Python使用pydub库对mp3与wav格式进行互转的方法
2019/01/10 Python
Python如何在DataFrame增加数值
2020/02/14 Python
Python制作一个仿QQ办公版的图形登录界面
2020/09/22 Python
专业销售业务员求职信
2013/11/18 职场文书
保护环境倡议书300字
2014/05/19 职场文书
基层党员群众路线教育实践活动个人对照检查材料思想汇报
2014/10/05 职场文书
干部培训工作总结2015
2015/05/25 职场文书
MySql存储过程之逻辑判断和条件控制
2021/05/26 MySQL
Node与Python 双向通信的实现代码
2021/07/16 Javascript