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 相关文章推荐
用js 让图片在 div或dl里 居中,底部对齐
Jan 21 Javascript
JS动画效果代码3
Apr 03 Javascript
定时器(setTimeout/setInterval)调用带参函数失效解决方法
Mar 26 Javascript
IE8下jQuery改变png图片透明度时出现的黑边
Aug 30 Javascript
原生js实现网易轮播图效果
Apr 10 Javascript
bootstrapfileinput实现文件自动上传
Nov 08 Javascript
Bootstrap模态框插入视频的实现代码
Jun 25 Javascript
vue实现Excel文件的上传与下载功能的两种方式
Jun 28 Javascript
layui多图上传实现删除功能的例子
Sep 23 Javascript
JS面向对象编程实现的Tab选项卡案例详解
Mar 03 Javascript
react ant Design手动设置表单的值操作
Oct 31 Javascript
Vue 列表页带参数进详情页的操作(router-link)
Nov 13 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实现获取图片颜色值的方法
2014/07/11 PHP
smarty中post用法实例
2014/11/28 PHP
PHP实现驼峰样式字符串(首字母大写)转换成下划线样式字符串的方法示例
2017/08/10 PHP
PHP bin2hex()函数基础实例讲解
2019/02/11 PHP
web基于浏览器的本地存储方法应用
2012/11/27 Javascript
JS模板实现方法
2013/04/03 Javascript
多个jquery.datatable共存,checkbox全选异常的快速解决方法
2013/12/10 Javascript
jquery Ajax 实现加载数据前动画效果的示例代码
2014/02/07 Javascript
js获取UserControl内容为拼html时提供方便
2014/11/02 Javascript
使用JS获取当前地理位置方法汇总
2014/12/18 Javascript
jQuery拖拽排序插件制作拖拽排序效果(附源码下载)
2016/02/23 Javascript
Nodejs如何复制文件
2016/03/09 NodeJs
Vue.js 表单校验插件
2016/08/14 Javascript
js实现简单的碰壁反弹效果
2016/08/30 Javascript
React router动态加载组件之适配器模式的应用详解
2018/09/12 Javascript
vue路由事件beforeRouteLeave及组件内定时器的清除方法
2018/09/29 Javascript
Python函数式编程指南(一):函数式编程概述
2015/06/24 Python
Python开发中爬虫使用代理proxy抓取网页的方法示例
2017/09/26 Python
Linux-ubuntu16.04 Python3.5配置OpenCV3.2的方法
2018/04/02 Python
详解python运行三种方式
2019/05/13 Python
Selenium+Python 自动化操控登录界面实例(有简单验证码图片校验)
2019/06/28 Python
pytorch中如何使用DataLoader对数据集进行批处理的方法
2019/08/06 Python
Python Gitlab Api 使用方法
2019/08/28 Python
Python中的相关分析correlation analysis的实现
2019/08/29 Python
wxPython实现列表增删改查功能
2019/11/19 Python
Django静态资源部署404问题解决方案
2020/05/11 Python
巴西体育用品商店:Lojão dos Esportes
2018/07/21 全球购物
Hunkemöller瑞士网上商店:欧洲最大的内衣品牌之一
2018/12/03 全球购物
Eclipse面试题
2014/03/22 面试题
如何写好升职自荐信
2014/01/06 职场文书
后勤服务中心总经理工作职责
2014/03/03 职场文书
仓库管理计划书
2014/05/04 职场文书
导游词之无锡华莱坞
2019/12/02 职场文书
Nginx配置SSL证书出错解决方案
2021/03/31 Servers
Redisson实现Redis分布式锁的几种方式
2021/08/07 Redis
javascript条件式访问属性和箭头函数介绍
2021/11/17 Javascript