|
前言
隨著多核cpu的普級(jí),并發(fā)/并行多線程運(yùn)算在主流的編程語(yǔ)言越來(lái)越流行,而在目前Javascript實(shí)現(xiàn)中還看不到在語(yǔ)言方面支持多線程,現(xiàn)在Javascript如此流行,真希望今后會(huì)在語(yǔ)言的層面有很大的變化。
下面我就個(gè)人觀點(diǎn)猜測(cè)一下,并行運(yùn)算將會(huì)怎樣支持前端Javascript的。
1、不太可能的進(jìn)化
顯示線程的支持,如果在Javascript中支持顯示線程,那么可能是一種災(zāi)難,目前的瀏覽器解析Javascript并執(zhí)行都是在瀏覽器的ui線程中工作的。
比如你可以在Javascript中運(yùn)行while(true),這時(shí)瀏覽器界面就會(huì)停止響應(yīng).或者通過(guò)我之前的文章(編譯Javascript引擎,為JavaScript提供睡眠功能:http://www.cnblogs.com/ioriwellings/archive/2010/08/16/1800416.html)了解UI界面被阻塞的過(guò)程。
另外如果顯示支持線程必然也會(huì)支持線程間數(shù)據(jù)同步的同步原語(yǔ)功能,那就會(huì)出現(xiàn)這樣的問(wèn)題:
在一個(gè)函數(shù)中獲取鎖,而在另一個(gè)函數(shù)中釋放鎖,但是如果另一個(gè)函數(shù)出錯(cuò)怎么辦,或者另一個(gè)函數(shù)是從另一個(gè)文件中引用的,又碰巧那個(gè)文件由于某些原因(網(wǎng)絡(luò)問(wèn)題,編碼問(wèn)題)沒(méi)有加載進(jìn)來(lái),這時(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;
it知識(shí)庫(kù):Javascript的并行運(yùn)算,轉(zhuǎn)載需保留來(lái)源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。