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 相关文章推荐
jquerydom对象的事件隐藏显示和对象数组示例
Dec 10 Javascript
js实现正方形颜色从下往上升的效果
Aug 04 Javascript
JavaScript实现点击自动选择TextArea文本的方法
Jul 02 Javascript
jquery trigger实现联动的方法
Feb 29 Javascript
javascript截图 jQuery插件imgAreaSelect使用详解
May 04 Javascript
BootStrap.css 在手机端滑动时右侧出现空白的原因及解决办法
Jun 07 Javascript
BootStrap便签页的简单应用
Jan 06 Javascript
Vue2递归组件实现树形菜单
Apr 10 Javascript
Vue的Flux框架之Vuex状态管理器
Jul 30 Javascript
Angular 项目实现国际化的方法
Jan 08 Javascript
如何检查一个对象是否为空
Apr 11 Javascript
vue3不同环境下实现配置代理
May 25 Vue.js
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
Protoss兵种对照表
2020/03/14 星际争霸
松下Panasonic RF-B65电路分析
2021/03/02 无线电
PHP 以POST方式提交XML、获取XML,解析XML详解及实例
2016/10/26 PHP
一个很酷的拖动层的js类,兼容IE及Firefox
2009/06/23 Javascript
jquery的Tooltip插件 qtip使用详细说明
2010/09/08 Javascript
js 创建书签小工具之理论
2011/02/25 Javascript
jquery中通过过滤器获取表单元素的实现代码
2011/07/05 Javascript
无缝滚动改进版支持上下左右滚动(封装成函数)
2012/12/04 Javascript
JavaScript实现url地址自动检测并添加URL链接示例代码
2013/11/12 Javascript
Mac/Windows下如何安装Node.js
2013/11/22 Javascript
浏览器窗口加载和大小改变事件示例
2014/02/27 Javascript
JavaScript数据结构和算法之二叉树详解
2015/02/11 Javascript
JavaScript数组对象实现增加一个返回随机元素的方法
2015/07/27 Javascript
JS实现iframe自适应高度的方法(兼容IE与FireFox)
2016/06/24 Javascript
javascript验证手机号和实现星号(*)代替实例
2016/08/16 Javascript
微信小程序 textarea 详解及简单使用方法
2016/12/05 Javascript
用file标签实现多图文件上传预览
2017/02/14 Javascript
AngularJS折叠菜单实现方法示例
2017/05/18 Javascript
[51:36]Optic vs Newbee 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
Python实现的栈(Stack)
2018/01/26 Python
Python 实现王者荣耀中的敏感词过滤示例
2019/01/21 Python
Python3按一定数据位数格式处理bin文件的方法
2019/01/24 Python
Python正则表达式实现简易计算器功能示例
2019/05/07 Python
PyQt5中QTableWidget如何弹出菜单的示例代码
2020/02/23 Python
Python 找出出现次数超过数组长度一半的元素实例
2020/05/11 Python
html5默认气泡修改的代码详解
2020/03/13 HTML / CSS
美国性感女装网站:bebe
2017/03/04 全球购物
世界领先的高品质定制产品平台:Zazzle
2017/07/23 全球购物
XMLHttpRequest对象在IE和Firefox中创建方式有没有不同
2016/03/23 面试题
Java语言程序设计测试题改错题部分
2014/07/22 面试题
公交公司毕业生求职信
2014/02/15 职场文书
报纸媒体创意广告词
2014/03/17 职场文书
经营管理策划方案
2014/05/22 职场文书
教研活动主持词
2015/07/03 职场文书
浅谈Web Storage API的使用
2021/06/23 Javascript
python基础之//、/与%的区别详解
2022/06/10 Python