標籤:
從fp11.4開始支援worker技術, 即as3中的線程概念, 到了fp11.5, flascc中開始支援pthread家族來建立線程。
總的來說, as3中有兩種建立線程的方法:
1、直接在as3中利用worker家族介面來建立和使用線程。
2、利用flascc技術在c中使用pthread家族介面來建立和使用線程。adobe官方文檔明確指出, 使用pthread建立的線程, 最終也是使用as3中的worker來實現的。
一、worker對象的建立和擷取
1、利用worker家族介面建立的worker的擷取
有三種途徑, 如下:
1.1 建立worker的時候直接擷取
var worker: Worker = WorkerDomain.current.createWorker(swfBytes);
1.2 在要擷取的地方使用Worker.current擷取當前代碼所在的線程。
1.3 利用WorkerDomain.current.listWorkers()來擷取當前所有的worker列表。
2、利用pthread家族介面建立的worker的擷取
因為利用pthread_create建立出現的線程實際上最終也是會產生一個worker來啟動並執行,所以也就有了對於這個worker對象的擷取。但是這時候只能使用1.2和1.3的方法來擷取, 而沒辦法直接使用1.1可以放線程建立者來擷取當前建立的worker。 因為這個原因, 或許會給使用者帶來不便。
二、worker之間的通訊
三、關於pthread和worker的關係
1、thread proc函數的運行和worker的載入(建構函式, added to stage事件)先後循序關聯性。
2、如果一個thread proc是一個死迴圈函數, 那麼worker本身能否處理自身事件,比如enter frame等。
3、關於pthread與普通worker之間的效能、記憶體使用量的測試對比。
as3中的多線程