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 相关文章推荐
奉献给JavaScript初学者的编写开发的七个细节
Jan 11 Javascript
javascript权威指南 学习笔记之null和undefined
Sep 25 Javascript
javascript删除一个html元素节点的方法
Dec 20 Javascript
js实现继承的5种方式
Dec 01 Javascript
vue.js做一个简单的编辑菜谱功能
May 08 Javascript
JavaScript中join()、splice()、slice()和split()函数用法示例
Aug 24 Javascript
详解Axios 如何取消已发送的请求
Oct 20 Javascript
微信小程序自定义可滑动日历界面
Dec 28 Javascript
bootstrap table列和表头对不齐的解决方法
Jul 19 Javascript
js判断复选框是否选中的方法示例【基于jQuery】
Oct 10 jQuery
通过vue刷新左侧菜单栏操作
Aug 06 Javascript
Antd的Table组件嵌套Table以及选择框联动操作
Oct 24 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 array_multisort 对数组进行排序详解及实例代码
2016/10/27 PHP
JS常见问题整理(持续更新)
2013/08/06 Javascript
用jQuery与JSONP轻松解决跨域访问的问题
2014/02/04 Javascript
JS父页面与子页面相互传值方法
2014/03/05 Javascript
JS实现静止元素自动移动示例
2014/04/14 Javascript
jQuery.holdReady()使用方法
2014/05/20 Javascript
jQuery.holdReady()方法用法实例
2014/12/27 Javascript
node.js集成百度UE编辑器
2015/02/05 Javascript
jQuery拖拽插件gridster使用指南
2015/04/21 Javascript
JavaScript点击按钮后弹出透明浮动层的方法
2015/05/11 Javascript
js clearInterval()方法的定义和用法
2015/11/11 Javascript
用jQuery获取table中行id和td值的实现代码
2016/05/19 Javascript
js 连续赋值的简单实现
2016/06/13 Javascript
jQuery EasyUI提交表单验证
2016/07/19 Javascript
超全面的vue.js使用总结
2017/02/12 Javascript
js中getBoundingClientRect的作用及兼容方案详解
2018/02/01 Javascript
浅谈vue.js导入css库(elementUi)的方法
2018/03/09 Javascript
vue计算属性及使用详解
2018/04/02 Javascript
浅析Vue 和微信小程序的区别、比较
2018/08/03 Javascript
vue以组件或者插件的形式实现throttle或者debounce
2019/05/22 Javascript
JS面向对象之单选框实现
2020/01/17 Javascript
vue实现学生信息管理系统
2020/05/30 Javascript
解决vue项目 build之后资源文件找不到的问题
2020/09/12 Javascript
[01:18]一目了然!DOTA2DotA快捷操作对比第一弹
2014/07/01 DOTA
听歌识曲--用python实现一个音乐检索器的功能
2016/11/15 Python
Python3实现的Mysql数据库操作封装类
2018/06/06 Python
Python DataFrame 设置输出不显示index(索引)值的方法
2018/06/07 Python
Python环境配置实现pip加速过程解析
2020/11/27 Python
python+opencv实现车道线检测
2021/02/19 Python
聊聊python在linux下与windows下导入模块的区别说明
2021/03/03 Python
Overload和Override的区别
2012/09/02 面试题
我的中国梦演讲稿高中篇
2014/08/19 职场文书
学生会竞选演讲稿纪检部
2014/08/25 职场文书
党员个人批评与自我批评
2014/10/14 职场文书
物业工程部岗位职责
2015/02/11 职场文书
python简单验证码识别的实现过程
2021/06/20 Python