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 相关文章推荐
利用ASP发送和接收XML数据的处理方法与代码
Nov 13 Javascript
Jquery index()方法 获取相应元素索引值
Oct 12 Javascript
cookie的复制与使用记住用户名实现代码
Nov 04 Javascript
给文字加上着重号的JS代码
Nov 12 Javascript
在线一元二次方程计算器实例(方程计算器在线计算)
Dec 22 Javascript
jQuery写fadeTo示例代码
Feb 21 Javascript
JavaScript显示当前文档最后修改日期的方法
Mar 19 Javascript
jQuery中Ajax全局事件引用方式及各个事件(全局/局部)执行顺序
Jun 02 Javascript
jquery插件锦集【推荐】
Dec 16 Javascript
微信小程序 wx.login解密出现乱码的问题解决办法
Mar 10 Javascript
Vue Router去掉url中默认的锚点#
Aug 01 Javascript
Vue3 源码导读(推荐)
Oct 14 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如何使用cURL实现Get和Post请求
2020/07/11 PHP
js 事件小结 表格区别
2007/08/13 Javascript
让Firefox支持event对象实现代码
2009/11/07 Javascript
完美实现bootstrap分页查询
2015/12/09 Javascript
移动端滑动插件Swipe教程
2016/10/16 Javascript
详解webpack 配合babel 将es6转成es5 超简单实例
2017/05/02 Javascript
vue结合element-ui使用示例
2019/01/24 Javascript
利用Electron简单撸一个Markdown编辑器的方法
2019/06/10 Javascript
微信小程序实现多选框全选与反全选及购物车中删除选中的商品功能
2019/12/17 Javascript
微信小程序如何加载数据库真实数据的实现
2020/03/04 Javascript
跟老齐学Python之??碌某?? target=
2014/09/12 Python
Python set集合类型操作总结
2014/11/07 Python
举例讲解Python中的身份运算符的使用方法
2015/10/13 Python
Python中的条件判断语句基础学习教程
2016/02/07 Python
python编程之requests在网络请求中添加cookies参数方法详解
2017/10/25 Python
python使用xslt提取网页数据的方法
2018/02/23 Python
Python中将dataframe转换为字典的实例
2018/04/13 Python
如何利用Python分析出微信朋友男女统计图
2019/01/25 Python
Python异常处理知识点总结
2019/02/18 Python
详解python3 + Scrapy爬虫学习之创建项目
2019/04/12 Python
python RC4加密操作示例【测试可用】
2019/09/26 Python
pandas将多个dataframe以多个sheet的形式保存到一个excel文件中
2019/10/10 Python
python处理RSTP视频流过程解析
2020/01/11 Python
学会python自动收发邮件 代替你问候女友
2020/05/20 Python
浅谈Python xlwings 读取Excel文件的正确姿势
2021/02/26 Python
CSS3 Calc实现滚动条出现页面不跳动问题
2017/09/14 HTML / CSS
美国迪克体育用品商店:DICK’S Sporting Goods
2018/07/24 全球购物
大专生自我评价
2014/01/28 职场文书
结婚周年感言
2014/02/24 职场文书
贫困证明书格式及范文
2014/10/15 职场文书
出纳工作检讨书
2014/10/18 职场文书
2014年车间工作总结
2014/11/21 职场文书
自我检讨报告
2015/01/28 职场文书
银行中层干部培训心得体会
2016/01/11 职场文书
mysql的MVCC多版本并发控制的实现
2021/04/14 MySQL
总结python多进程multiprocessing的相关知识
2021/06/29 Python