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 相关文章推荐
完美兼容IE,chrome,ff的设为首页、加入收藏及保存到桌面js代码
Dec 17 Javascript
JS实现在线统计一个页面内鼠标点击次数的方法
Feb 28 Javascript
jscript读写二进制文件的方法
Apr 22 Javascript
轻松学习Javascript闭包函数
Dec 15 Javascript
基于JavaScript实现购物网站商品放大镜效果
Sep 06 Javascript
AngularJs篇:使用AngularJs打造一个简易权限系统的实现代码
Dec 26 Javascript
关于angularJs清除浏览器缓存的方法
Nov 28 Javascript
Vue.js做select下拉列表的实例(ul-li标签仿select标签)
Mar 02 Javascript
详解使用VUE搭建后台管理系统(vue-cli更新至3.0)
Aug 22 Javascript
javaScript实现游戏倒计时功能
Nov 17 Javascript
vue 实现Web端的定位功能 获取经纬度
Aug 08 Javascript
vue使用一些外部插件及样式的配置代码
Nov 18 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
两级联动select刷新后其值保持不变的实现方法
2014/01/27 PHP
PHP实现事件机制的方法
2015/07/10 PHP
PHP生成各种随机验证码的方法总结【附demo源码】
2017/06/05 PHP
阿里云PHP SMS短信服务验证码发送方法
2017/07/11 PHP
解析window.open的使用方法总结
2013/06/19 Javascript
Iframe 自动适应页面的高度示例代码
2014/02/26 Javascript
手机号码,密码正则验证
2014/09/04 Javascript
jQuery修改class属性和CSS样式整理
2015/01/30 Javascript
js禁止页面刷新与后退的方法
2015/06/08 Javascript
Node.js重新刷新session过期时间的方法
2016/02/04 Javascript
微信小程序-小说阅读小程序实例(demo)
2017/01/12 Javascript
jquery点赞功能实现代码 点个赞吧!
2020/05/29 jQuery
详解React native全局变量的使用(跨组件的通信)
2017/09/07 Javascript
vue2.0获取鼠标位置的方法
2018/09/13 Javascript
node.js的http.createServer过程深入解析
2019/06/06 Javascript
基于vue写一个全局Message组件的实现
2019/08/15 Javascript
js canvas实现星空连线背景特效
2019/11/01 Javascript
python使用rsa加密算法模块模拟新浪微博登录
2014/01/22 Python
Python的Django框架可适配的各种数据库介绍
2015/07/15 Python
python opencv 直方图反向投影的方法
2018/02/24 Python
解决pycharm每次新建项目都要重新安装一些第三方库的问题
2019/01/17 Python
python+selenium+chromedriver实现爬虫示例代码
2020/04/10 Python
python实现数字炸弹游戏
2020/07/17 Python
python使用re模块爬取豆瓣Top250电影
2020/10/20 Python
Bata印度官网:源自欧洲舒适鞋履品牌
2020/01/30 全球购物
关键字throw与throws的用法差异
2016/11/22 面试题
Java如何支持I18N?
2016/10/31 面试题
教育科学研究生自荐信
2013/10/09 职场文书
2013年办公室秘书的个人自我鉴定
2013/10/24 职场文书
班主任班级寄语大全
2014/04/04 职场文书
校长寄语大全
2014/04/09 职场文书
2014年维稳工作总结
2014/11/18 职场文书
文言文辞职信
2015/02/28 职场文书
详解GaussDB for MySQL性能优化
2021/05/18 MySQL
pytorch中的model=model.to(device)使用说明
2021/05/24 Python
深入解读Java三大集合之map list set的用法
2021/11/11 Java/Android