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 相关文章推荐
父窗口获取弹出子窗口文本框的值
Jun 27 Javascript
JS随机生成不重复数据的实例方法
Jul 17 Javascript
设置checkbox为只读(readOnly)的两种方式
Oct 11 Javascript
JavaScript用select实现日期控件
Jul 17 Javascript
jquery不常用方法汇总
Jul 26 Javascript
用javascript实现自动输出网页文本
Jul 30 Javascript
当jquery ajax遇上401请求的解决方法
May 19 Javascript
原生JS控制多个滚动条同步跟随滚动效果
Dec 22 Javascript
axios简单实现小程序延时loading指示
Jul 30 Javascript
vue项目中常见问题及解决方案(推荐)
Oct 21 Javascript
js实现上传按钮并显示缩略图小轮子
May 04 Javascript
使用Vant完成DatetimePicker 日期的选择器操作
Nov 12 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缩略图生成和图片水印制作
2017/01/07 PHP
使用WAMP搭建PHP本地开发环境
2017/05/10 PHP
Ubuntu彻底删除PHP7.0的方法
2018/07/27 PHP
Linux下 php7安装redis的方法
2018/11/01 PHP
用JavaScript事件串连执行多个处理过程的方法
2007/03/09 Javascript
Jquery+ajax请求data显示在GridView上(asp.net)
2010/08/27 Javascript
纯js实现瀑布流展现照片(自动适应窗口大小)
2013/04/08 Javascript
JS中判断null、undefined与NaN的方法
2014/03/24 Javascript
jQuery简单实现遍历数组的方法
2015/04/14 Javascript
jQuery弹出下拉列表插件(实现kindeditor的@功能)
2016/08/16 Javascript
JavaScript 保护变量不被随意修改的实现代码
2017/09/27 Javascript
详解.vue文件中style标签的几个标识符
2018/07/17 Javascript
jquery3和layui冲突导致使用layui.layer.full弹出全屏iframe窗口时高度152px问题
2019/05/12 jQuery
微信小程序动态显示项目倒计时
2019/06/20 Javascript
深入理解javascript中的this
2021/02/08 Javascript
[02:16]2018年度CS GO最具人气选手-完美盛典
2018/12/16 DOTA
详解PANDAS 数据合并与重塑(join/merge篇)
2019/07/09 Python
Python制作微信好友背景墙教程(附完整代码)
2019/07/17 Python
对Django项目中的ORM映射与模糊查询的使用详解
2019/07/18 Python
利用Python复制文件的9种方法总结
2019/09/02 Python
使用Python的turtle模块画国旗
2019/09/24 Python
Pytorch 实现冻结指定卷积层的参数
2020/01/06 Python
Python实现粒子群算法的示例
2021/02/14 Python
css3实现多个元素依次显示效果
2017/12/12 HTML / CSS
h5封装下拉刷新
2020/08/25 HTML / CSS
英国No.1文具和办公用品在线:Euroffice
2016/09/21 全球购物
家用个人磨皮机:Trophy Skin
2017/03/30 全球购物
工程部主管岗位职责
2013/11/17 职场文书
本科毕业生专业自荐书范文
2014/02/05 职场文书
大专学生求职自荐信
2014/07/06 职场文书
三潭印月的导游词
2015/02/12 职场文书
小学体育组工作总结
2015/08/13 职场文书
2019如何书写演讲稿?
2019/07/01 职场文书
你会写报告?产品体验报告到底该怎么写?
2019/08/14 职场文书
攻略丨滑雪究竟该选哪款对讲机?
2022/02/18 无线电
浅谈MySql update会锁定哪些范围的数据
2022/06/25 MySQL