ActionScript Worker 新特性初步分析總結

最近Flash AS3圈子裏都在討論Player的新特性 ---- Worker,也算是沸沸揚揚,我也在第一時間之後對這個新特性做了一番研究,雖然研究數據都是臨時創建,目前也找不到了,但也算是對這個新特性有了一番總結,再此跟各位aser探討聊聊。

相信最近大家都對這個新特性理解成了多線程,卻總感覺不太像其他語言一樣,比如Java,C#等,而且Adobe對其命名叫Worker,一時不能理解。不過如果你有了解過Node.JS,我想,Worker的含義,你就能理解了。

確切說,這次的Player並不是什麼真正的多線程。

若按照其他語言的多線程原理,應該可以由開發者主動創建一個線程,並利用這個線程來完成一些事情。

但是Adobe的做法是利用了以前的一種模擬多線程的技術(俗稱僞多線程),比如你有一個顯示在遊覽器內的swf,同時你還有另一個swf只運行於後臺,然後利用通信技術使兩個swf之間達到數據狀態同步。其中,前者遊覽器上的swf做爲圖像渲染,而後臺swf做爲一些耗時的數據處理,當數據處理完成就發送給遊覽器swf做更新等。

而Adobe在這個僞多線程的基礎上做了自己的優化和封裝:
1.不用在後臺開啓另一個swf進程,即使用Worker來讀取字節流並運行於新線程,此技術最貼切的名字叫併發,參照Node.JS
2.Adobe自己封裝了兩個swf之間的通信,即使用MessageChannel來傳遞消息,此技術最貼切的名字叫消息機制,參照Scala

所以這就是Adobe所做的多線程技術--"Worker",這也就是爲什麼,目前的ide無法識別Debug的原因,因爲目前無法支持對另一個非ide啓動的swf做debug。雖然目前這個技術對於Player來說還是很有用的,可以處理平時一些計算時間非常耗時而影響UI的事情,比如解析數據,但是要記住,它不是多線程,每次你創建一個新的Worker會開啓一個新的swf所需要的線程數(不能保證完全一樣,但至少不是一個)。

最後我賦予這個Adobe ActionScript Worker 一個新的名字 “僞多進程”。當然,也非常歡迎其他aser研究員探討分析~,畢竟Adobe開放的內容不多,目前的總結也只是初步的,後期會更進一步深入分析。


大家也可以參考這份更詳細的資料:

http://bbs.wefdc.com/thread-1638-1-1.html

發佈了2 篇原創文章 · 獲贊 6 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章