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 23 Javascript
多个jquery.datatable共存,checkbox全选异常的快速解决方法
Dec 10 Javascript
JS中使用Array函数shift和pop创建可忽略参数的例子
May 28 Javascript
jQuery截取指定长度字符串代码
Aug 21 Javascript
JS数组(Array)处理函数整理
Dec 07 Javascript
基于JavaScript实现图片点击弹出窗口而不是保存
Feb 06 Javascript
javascript数组去重方法总结(推荐)
Mar 20 Javascript
详解vue中router-link标签所必备了解的属性
Apr 15 Javascript
vue项目中使用fetch的实现方法
Apr 25 Javascript
vue列表单项展开收缩功能之this.$refs的详解
May 05 Javascript
echarts大屏字体自适应的方法步骤
Jul 12 Javascript
Jquery cookie插件实现原理代码解析
Aug 04 jQuery
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
老机欣赏|中国60年代精品收音机
2021/03/02 无线电
PHP函数preg_match_all正则表达式的基本使用详细解析
2013/08/31 PHP
destoon整合UCenter图文教程
2014/06/21 PHP
PHP也能干大事之PHP中的编码解码详解
2015/04/20 PHP
PHP判断FORM表单或URL参数来的数据是否为整数的方法
2016/03/25 PHP
PHP常用文件操作函数和简单实例分析
2016/06/03 PHP
Laravel 默认邮箱登录改成用户名登录的实现方法
2019/08/12 PHP
Centos7安装swoole扩展操作示例
2020/03/26 PHP
javascript call和apply方法
2008/11/24 Javascript
一个可以兼容IE FF的加为首页与加入收藏实现代码
2009/11/02 Javascript
javascript结合html5 canvas实现(可调画笔颜色/粗细/橡皮)的涂鸦板
2013/04/27 Javascript
jquery通过closest选择器修改上级元素的方法
2015/03/17 Javascript
JavaScript重载函数实例剖析
2016/05/13 Javascript
three.js搭建室内场景教程
2018/12/30 Javascript
一个小时快速搭建微信小程序的方法步骤
2019/04/15 Javascript
在vue项目中使用codemirror插件实现代码编辑器功能
2019/08/27 Javascript
JS实现秒杀倒计时特效
2020/01/02 Javascript
[04:29]DOTA2亚洲邀请赛小组赛第一日 TOP10精彩集锦
2015/02/01 DOTA
Tornado 多进程实现分析详解
2018/01/12 Python
python SMTP实现发送带附件电子邮件
2018/05/22 Python
解决python 自动安装缺少模块的问题
2018/10/22 Python
Python使用Shelve保存对象方法总结
2019/01/28 Python
Django 路由控制的实现
2019/07/17 Python
python 多进程并行编程 ProcessPoolExecutor的实现
2019/10/11 Python
Pycharm最新激活码2019(推荐)
2019/12/31 Python
在Keras中实现保存和加载权重及模型结构
2020/06/15 Python
keras实现图像预处理并生成一个generator的案例
2020/06/17 Python
HTML5 embed 标签使用方法介绍
2013/08/13 HTML / CSS
美国标志性加大尺码时装品牌:Ashley Stewart
2016/12/15 全球购物
大学生自助营养快餐店创业计划书
2014/01/13 职场文书
四年级下册教学反思
2014/02/01 职场文书
2014校长四风问题对照检查材料思想汇报
2014/09/16 职场文书
九华山导游词
2015/02/03 职场文书
入党转正申请自我鉴定
2019/06/25 职场文书
JavaScript实现外溢动态爱心的效果的示例代码
2022/03/21 Javascript
Spring中的@Transactional的工作原理
2022/06/05 Java/Android