TaskPool(任務(wù)池)和Worker的作用是為應(yīng)用程序提供一個(gè)多線程的運(yùn)行環(huán)境,用于處理耗時(shí)的計(jì)算任務(wù)或其他密集型任務(wù)。可以有效地避免這些任務(wù)阻塞主線程,從而最大化系統(tǒng)的利用率,降低整體資源消耗,并提高系統(tǒng)的整體性能。
本文將從實(shí)現(xiàn)特點(diǎn)和適用場(chǎng)景兩個(gè)方面來進(jìn)行TaskPool與Worker的比較,同時(shí)提供了各自運(yùn)作機(jī)制和注意事項(xiàng)的相關(guān)說明。
一、實(shí)現(xiàn)特點(diǎn)對(duì)比
表1 TaskPool和Worker的實(shí)現(xiàn)特點(diǎn)對(duì)比
實(shí)現(xiàn) | TaskPool | Worker |
---|---|---|
內(nèi)存模型 | 線程間隔離,內(nèi)存不共享。 | 線程間隔離,內(nèi)存不共享。 |
參數(shù)傳遞機(jī)制 | 采用標(biāo)準(zhǔn)的結(jié)構(gòu)化克隆算法(Structured Clone)進(jìn)行序列化、反序列化,完成參數(shù)傳遞。支持ArrayBuffer轉(zhuǎn)移和SharedArrayBuffer共享。 | 采用標(biāo)準(zhǔn)的結(jié)構(gòu)化克隆算法(Structured Clone)進(jìn)行序列化、反序列化,完成參數(shù)傳遞。支持ArrayBuffer轉(zhuǎn)移和SharedArrayBuffer共享。 |
參數(shù)傳遞 | 直接傳遞,無需封裝,默認(rèn)進(jìn)行transfer。 | 消息對(duì)象唯一參數(shù),需要自己封裝。 |
方法調(diào)用 | 直接將方法傳入調(diào)用。 | 在Worker線程中進(jìn)行消息解析并調(diào)用對(duì)應(yīng)方法。 |
返回值 | 異步調(diào)用后默認(rèn)返回。 | 主動(dòng)發(fā)送消息,需在onmessage解析賦值。 |
生命周期 | TaskPool自行管理生命周期,無需關(guān)心任務(wù)負(fù)載高低。 | 開發(fā)者自行管理Worker的數(shù)量及生命周期。 |
任務(wù)池個(gè)數(shù)上限 | 自動(dòng)管理,無需配置。 | 同個(gè)進(jìn)程下,最多支持同時(shí)開啟8個(gè)Worker線程。 |
任務(wù)執(zhí)行時(shí)長(zhǎng)上限 | 無限制。 | 無限制。 |
設(shè)置任務(wù)的優(yōu)先級(jí) | 不支持。 | 不支持。 |
執(zhí)行任務(wù)的取消 | 支持取消任務(wù)隊(duì)列中等待的任務(wù)。 | 不支持。 |
鴻蒙開發(fā)應(yīng)用知識(shí)更新庫gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md 在這。 | 或+mau123789學(xué)習(xí),是v喔 |
二、適用場(chǎng)景對(duì)比
TaskPool偏向獨(dú)立任務(wù)維度,該任務(wù)在線程中執(zhí)行,無需關(guān)注線程的生命周期,超長(zhǎng)任務(wù)(大于3分鐘)會(huì)被系統(tǒng)自動(dòng)回收;而Worker偏向線程的維度,支持長(zhǎng)時(shí)間占據(jù)線程執(zhí)行,需要主動(dòng)管理線程生命周期。
常見的一些開發(fā)場(chǎng)景及適用具體說明如下:
有關(guān)聯(lián)的一系列同步任務(wù)。例如在一些需要?jiǎng)?chuàng)建、使用句柄的場(chǎng)景中,句柄創(chuàng)建每次都是不同的,該句柄需永久保存,保證使用該句柄進(jìn)行操作,需要使用Worker。
需要頻繁取消的任務(wù)。例如圖庫大圖瀏覽場(chǎng)景,為提升體驗(yàn),會(huì)同時(shí)緩存當(dāng)前圖片左右側(cè)各2張圖片,往一側(cè)滑動(dòng)跳到下一張圖片時(shí),要取消另一側(cè)的一個(gè)緩存任務(wù),需要使用TaskPool。
大量或者調(diào)度點(diǎn)較分散的任務(wù)。例如大型應(yīng)用的多個(gè)模塊包含多個(gè)耗時(shí)任務(wù),不方便使用8個(gè)Worker去做負(fù)載管理,推薦采用TaskPool。
審核編輯 黃宇
-
Worker
+關(guān)注
關(guān)注
0文章
8瀏覽量
6464 -
鴻蒙
+關(guān)注
關(guān)注
57文章
2352瀏覽量
42859
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論