併發是指在同一時間段內,能夠處理多個任務的能力。為了提升應用的響應速度與幀率,以及防止耗時任務對主執行緒的干擾,HarmonyOS系統提供了非同步併發和多執行緒併發兩種處理策略。
-
非同步併發是指非同步程式碼在執行到一定程度後會被暫停,以便在未來某個時間點繼續執行,這種情況下,同一時間只有一段程式碼在執行。
-
多執行緒併發允許在同一時間段內同時執行多段程式碼。在主執行緒繼續響應使用者操作和更新UI的同時,後臺也能執行耗時操作,從而避免應用出現卡頓。
taskpool:對於一些耗時操作,使用Promise佔用了主執行緒資源,可能會導致ANR,所以出現了taskPool來保證可以起子執行緒處理耗時操作
TaskPool支援開發者在主執行緒封裝任務拋給任務佇列,系統選擇合適的工作執行緒,進行任務的分發及執行,再將結果返回給主執行緒。介面直觀易用,支援任務的執行、取消,以及指定優先順序的能力,同時透過系統統一執行緒管理,結合動態排程及負載均衡演算法,可以節約系統資源。
class TestA { execute() { taskpool.execute(calc, "123sss").then((result) => { const target = result as number }) } } @Sendable function calc(value: string): number { return 123 }
Worker:主要作用是為應用程式提供一個多執行緒的執行環境,可滿足應用程式在執行過程中與主執行緒分離,在後臺執行緒中執行一個指令碼操作耗時操作,極大避免類似於計算密集型或高延遲的任務阻塞主執行緒的執行