最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
當(dāng)前位置: 首頁 - 科技 - 知識(shí)百科 - 正文

Javascript的并行運(yùn)算實(shí)現(xiàn)代碼_javascript技巧

來源:懂視網(wǎng) 責(zé)編:小采 時(shí)間:2020-11-27 20:55:56
文檔

Javascript的并行運(yùn)算實(shí)現(xiàn)代碼_javascript技巧

Javascript的并行運(yùn)算實(shí)現(xiàn)代碼_javascript技巧:下面我就個(gè)人觀點(diǎn)猜測一下,并行運(yùn)算將會(huì)怎樣支持前端javascript的. 1 不太可能的進(jìn)化 顯示線程的支持 如果在Javascript中支持顯示線程,那么可能是一種災(zāi)難,目前的瀏覽器解析Javascript并執(zhí)行都是在瀏覽器的ui線程中工作的. 比如你可以在Javascrip
推薦度:
導(dǎo)讀Javascript的并行運(yùn)算實(shí)現(xiàn)代碼_javascript技巧:下面我就個(gè)人觀點(diǎn)猜測一下,并行運(yùn)算將會(huì)怎樣支持前端javascript的. 1 不太可能的進(jìn)化 顯示線程的支持 如果在Javascript中支持顯示線程,那么可能是一種災(zāi)難,目前的瀏覽器解析Javascript并執(zhí)行都是在瀏覽器的ui線程中工作的. 比如你可以在Javascrip

下面我就個(gè)人觀點(diǎn)猜測一下,并行運(yùn)算將會(huì)怎樣支持前端javascript的.

1 不太可能的進(jìn)化

顯示線程的支持
如果在Javascript中支持顯示線程,那么可能是一種災(zāi)難,目前的瀏覽器解析Javascript并執(zhí)行都是在瀏覽器的ui線程中工作的.
比如你可以在Javascript中運(yùn)行while(true),這時(shí)瀏覽器界面就會(huì)停止響應(yīng).或者通過我之前的文章(編譯Javascript引擎,為JavaScript提供睡眠功能:http://www.cnblogs.com/ioriwellings/archive/2010/08/16/1800416.html)了解UI界面被阻塞的過程.
另外如果顯示支持線程必然也會(huì)支持線程間數(shù)據(jù)同步的同步原語功能,那就會(huì)出現(xiàn)這樣的問題:
在一個(gè)函數(shù)中獲取鎖,而在另一個(gè)函數(shù)中釋放鎖,但是如果另一個(gè)函數(shù)出錯(cuò)怎么辦,或者另一個(gè)函數(shù)是從另一個(gè)文件中引用的,又碰巧那個(gè)文件由于某些原因(網(wǎng)絡(luò)問題,編碼問題)沒有加載進(jìn)來,這時(shí)就會(huì)發(fā)生死鎖.
所以根據(jù)上面的一些原因,在JavaScript支持顯示線程還不太現(xiàn)實(shí).

2 有可能的進(jìn)化

隱式的并行支持
類似于openMP的宏指令,
下面代碼聲明并行運(yùn)算FOR循環(huán):
代碼如下:
#pragma omp parallel for
for (i = 0; i < N; i++)
  a[i] = 2 * i;

這種方式可以避免前面遇到的各種麻煩,并行的運(yùn)算被托管于Javascript引擎內(nèi)部,所以Javascript引擎有更多的空間處理優(yōu)化這些并行運(yùn)算,比如在內(nèi)部調(diào)用openMP,Intel TBB的并行功能.
所以我推測這種方式將會(huì)很可能被采用.

3 處理并行異常

由于Javascript代碼被隱式托管于并行線程處理,所以你可能不會(huì)馬上得到某個(gè)線程的異常狀態(tài),而是要等到全部的線程運(yùn)行結(jié)束后才會(huì)知道某些代碼出現(xiàn)異常.

4 調(diào)試器的進(jìn)化

會(huì)產(chǎn)生支持線程感知的Javascript調(diào)試器,能夠分析每個(gè)線程中的信息,并且能夠凍結(jié)/恢復(fù)某個(gè)線程的運(yùn)行.
當(dāng)然了,類似于firebug這樣的用Javascript腳本寫的調(diào)試器也將會(huì)有更大的提升,但是我想更理想的還是本地應(yīng)用程序的調(diào)試器將會(huì)成為主流,比如:visual studio.

5 結(jié)語

  并行運(yùn)算將會(huì)影響前臺(tái)Javascript的執(zhí)行性能,很多用Javascript寫的前臺(tái)效果,Javascript游戲的性能將得到改變與提升. 可是我會(huì)看到j(luò)avascript的這種轉(zhuǎn)變嗎?

如果實(shí)在等不到,還是可以編譯現(xiàn)有的js引擎,并添加并行運(yùn)算接口,然后自已發(fā)布瀏覽器,讓客戶下載,多核的功能還是可能利用到的.

但是還要兼容現(xiàn)在javascript規(guī)范,不然其它瀏覽器將不能識(shí)別你的代碼,所以就需要在js引擎內(nèi)部對(duì)原有串行代碼分析,而且要準(zhǔn)確,將可以轉(zhuǎn)換為并行的代碼進(jìn)行優(yōu)化.我想這個(gè)任務(wù)還是很堅(jiān)巨的.

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

Javascript的并行運(yùn)算實(shí)現(xiàn)代碼_javascript技巧

Javascript的并行運(yùn)算實(shí)現(xiàn)代碼_javascript技巧:下面我就個(gè)人觀點(diǎn)猜測一下,并行運(yùn)算將會(huì)怎樣支持前端javascript的. 1 不太可能的進(jìn)化 顯示線程的支持 如果在Javascript中支持顯示線程,那么可能是一種災(zāi)難,目前的瀏覽器解析Javascript并執(zhí)行都是在瀏覽器的ui線程中工作的. 比如你可以在Javascrip
推薦度:
  • 熱門焦點(diǎn)

最新推薦

猜你喜歡

熱門推薦

專題
Top