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中的事件
Sep 23 Javascript
jquery动态添加删除div 具体实现
Jul 20 Javascript
vue + vuex todolist的实现示例代码
Mar 09 Javascript
JavaScript设计模式之构造函数模式实例教程
Jul 02 Javascript
webuploader实现上传图片到服务器功能
Aug 16 Javascript
webpack+vue-cli项目中引入外部非模块格式js的方法
Sep 28 Javascript
jquery树形插件zTree高级使用详解
Aug 16 jQuery
vue动态子组件的两种实现方式
Sep 01 Javascript
详解Angular cli配置过程记录
Nov 07 Javascript
浅谈vue的第一个commit分析
Jun 08 Javascript
javascript如何使用函数random来实现课堂随机点名方法详解
Jul 28 Javascript
jquery插件实现轮播图效果
Oct 19 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
php静态文件返回304技巧分享
2015/01/06 PHP
php实现的美国50个州选择列表实例
2015/04/20 PHP
php异步:在php中使用fsockopen curl实现类似异步处理的功能方法
2016/12/10 PHP
出现“不能执行已释放的Script代码”错误的原因及解决办法
2007/08/29 Javascript
javascript整除实现代码
2010/11/23 Javascript
映彩衣的js随笔(js图片切换效果)
2011/07/31 Javascript
分享精心挑选的23款美轮美奂的jQuery 图片特效插件
2012/08/14 Javascript
jQuery根据纬度经度查看地图处理程序
2013/05/08 Javascript
javascript匿名函数实例分析
2014/11/18 Javascript
js实现网页标题栏闪烁提示效果实例分析
2014/11/20 Javascript
jQuery中clearQueue()方法用法实例
2014/12/29 Javascript
JavaScript必知必会(三) String .的方法来自何方
2016/06/08 Javascript
JS正则表达式验证中文字符
2017/05/08 Javascript
微信小程序图片横向左右滑动案例
2017/05/19 Javascript
JS自定义滚动条效果简单实现代码
2020/10/27 Javascript
浅谈JsonObject中的key-value数据解析排序问题
2017/12/06 Javascript
Javascript将图片的绝对路径转换为base64编码的方法
2018/01/11 Javascript
详解浏览器缓存和webpack缓存配置
2018/07/06 Javascript
vue插件开发之使用pdf.js实现手机端在线预览pdf文档的方法
2018/07/12 Javascript
JavaScript实现无限级递归树的示例代码
2019/03/29 Javascript
解决layui数据表格排序图标被超出的表头挤出去的问题
2019/09/19 Javascript
如何利用JS将手机号中间四位变成*号
2020/09/29 Javascript
[01:53]DOTA2超级联赛专访Zhou 五年职业青春成长
2013/05/29 DOTA
[01:18]一目了然!DOTA2DotA快捷操作对比第一弹
2014/07/01 DOTA
python非递归全排列实现方法
2017/04/10 Python
python数据批量写入ScrolledText的优化方法
2018/10/11 Python
python实现定时压缩指定文件夹发送邮件
2020/12/22 Python
python实现逆滤波与维纳滤波示例
2020/02/26 Python
python产生模拟数据faker库的使用详解
2020/11/04 Python
HTML5 背景的显示区域实现
2020/07/09 HTML / CSS
澳大利亚在线性感内衣商店:Fantasy Lingerie
2021/02/07 全球购物
2014年党员加强作风建设思想汇报
2014/09/15 职场文书
住房抵押登记委托书
2014/09/27 职场文书
财务经理岗位职责
2015/01/31 职场文书
公司岗位说明书
2015/10/08 职场文书
驾驶员安全责任协议书
2016/03/22 职场文书