0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

鴻蒙APP開(kāi)發(fā):【ArkTS類庫(kù)多線程】TaskPool和Worker的對(duì)比(2)

jf_46214456 ? 來(lái)源:jf_46214456 ? 作者:jf_46214456 ? 2024-03-27 15:44 ? 次閱讀

askPool運(yùn)作機(jī)制

圖1 TaskPool運(yùn)作機(jī)制示意圖

TaskPool支持開(kāi)發(fā)者在主線程封裝任務(wù)拋給任務(wù)隊(duì)列,系統(tǒng)選擇合適的工作線程,進(jìn)行任務(wù)的分發(fā)及執(zhí)行,再將結(jié)果返回給主線程。接口直觀易用,支持任務(wù)的執(zhí)行、取消。工作線程數(shù)量上限為4。

鴻蒙OS開(kāi)發(fā)更多內(nèi)容↓點(diǎn)擊HarmonyOSOpenHarmony技術(shù)
鴻蒙技術(shù)文檔開(kāi)發(fā)知識(shí)更新庫(kù)gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md在這。或+mau123789學(xué)習(xí),是v喔

Worker運(yùn)作機(jī)制

圖2 Worker運(yùn)作機(jī)制示意圖

創(chuàng)建Worker的線程稱為宿主線程(不一定是主線程,工作線程也支持創(chuàng)建Worker子線程),Worker自身的線程稱為Worker子線程(或Actor線程、工作線程)。每個(gè)Worker子線程與宿主線程擁有獨(dú)立的實(shí)例,包含基礎(chǔ)設(shè)施、對(duì)象、代碼段等。Worker子線程和宿主線程之間的通信是基于消息傳遞的,Worker通過(guò)序列化機(jī)制與宿主線程之間相互通信,完成命令及數(shù)據(jù)交互。

本文參考引用HarmonyOS官方開(kāi)發(fā)文檔,基于API9。

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Worker
    +關(guān)注

    關(guān)注

    0

    文章

    8

    瀏覽量

    6448
  • 鴻蒙
    +關(guān)注

    關(guān)注

    57

    文章

    2294

    瀏覽量

    42634
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    鴻蒙開(kāi)發(fā):【線程模型】

    管理其他線程ArkTS引擎實(shí)例,例如使用TaskPool(任務(wù)池)創(chuàng)建任務(wù)或取消任務(wù)、啟動(dòng)和終止Worker線程。
    的頭像 發(fā)表于 06-13 16:38 ?316次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>開(kāi)發(fā)</b>:【<b class='flag-5'>線程</b>模型】

    鴻蒙OS開(kāi)發(fā)實(shí)例:【ArkTS庫(kù)多線程@Concurrent裝飾器校驗(yàn)并發(fā)函數(shù)】

    在使用TaskPool時(shí),執(zhí)行的并發(fā)函數(shù)需要使用該裝飾器修飾,否則無(wú)法通過(guò)相關(guān)校驗(yàn)。從API version 9開(kāi)始,該裝飾器支持在ArkTS卡片中使用。
    的頭像 發(fā)表于 04-02 14:45 ?541次閱讀
    <b class='flag-5'>鴻蒙</b>OS<b class='flag-5'>開(kāi)發(fā)</b>實(shí)例:【<b class='flag-5'>ArkTS</b><b class='flag-5'>類</b><b class='flag-5'>庫(kù)</b><b class='flag-5'>多線程</b>@Concurrent裝飾器校驗(yàn)并發(fā)函數(shù)】

    鴻蒙OS開(kāi)發(fā)實(shí)例:【ArkTS庫(kù)多線程CPU密集型任務(wù)TaskPool

    CPU密集型任務(wù)是指需要占用系統(tǒng)資源處理大量計(jì)算能力的任務(wù),需要長(zhǎng)時(shí)間運(yùn)行,這段時(shí)間會(huì)阻塞線程其它事件的處理,不適宜放在主線程進(jìn)行。例如圖像處理、視頻編碼、數(shù)據(jù)分析等。 基于多線程并發(fā)機(jī)制處理CPU密集型任務(wù)可以提高CPU
    的頭像 發(fā)表于 04-01 22:25 ?741次閱讀
    <b class='flag-5'>鴻蒙</b>OS<b class='flag-5'>開(kāi)發(fā)</b>實(shí)例:【<b class='flag-5'>ArkTS</b><b class='flag-5'>類</b><b class='flag-5'>庫(kù)</b><b class='flag-5'>多線程</b>CPU密集型任務(wù)<b class='flag-5'>TaskPool</b>】

    鴻蒙OS開(kāi)發(fā)案例:【ArkTS庫(kù)多線程CPU密集型任務(wù)Worker

    通過(guò)某地區(qū)提供的房?jī)r(jià)數(shù)據(jù)訓(xùn)練一個(gè)簡(jiǎn)易的房?jī)r(jià)預(yù)測(cè)模型,該模型支持通過(guò)輸入房屋面積和房間數(shù)量去預(yù)測(cè)該區(qū)域的房?jī)r(jià),模型需要長(zhǎng)時(shí)間運(yùn)行,房?jī)r(jià)預(yù)測(cè)需要使用前面的模型運(yùn)行結(jié)果,因此需要使用Worker。
    的頭像 發(fā)表于 04-01 21:55 ?942次閱讀
    <b class='flag-5'>鴻蒙</b>OS<b class='flag-5'>開(kāi)發(fā)</b>案例:【<b class='flag-5'>ArkTS</b><b class='flag-5'>類</b><b class='flag-5'>庫(kù)</b><b class='flag-5'>多線程</b>CPU密集型任務(wù)<b class='flag-5'>Worker</b>】

    鴻蒙原生應(yīng)用開(kāi)發(fā)-ArkTS語(yǔ)言基礎(chǔ)庫(kù)多線程并發(fā)概述

    的功能,它允許在不同的進(jìn)程間傳遞對(duì)象的引用,使得不同進(jìn)程之間可以共享對(duì)象的狀態(tài)和方法,服務(wù)提供者必須繼承此類。 二、TaskPoolWorker ArkTS提供了TaskPool
    發(fā)表于 03-28 14:35

    鴻蒙原生應(yīng)用開(kāi)發(fā)-ArkTS語(yǔ)言基礎(chǔ)庫(kù)多線程TaskPoolWorker對(duì)比(三)

    是不同的,因此TaskPool工作線程只能使用線程安全的庫(kù),例如UI相關(guān)的非線程安全庫(kù)不能使用。
    發(fā)表于 03-27 16:26

    鴻蒙APP開(kāi)發(fā):【ArkTS庫(kù)多線程TaskPoolWorker對(duì)比

    TaskPool(任務(wù)池)和Worker的作用是為應(yīng)用程序提供一個(gè)多線程的運(yùn)行環(huán)境,用于處理耗時(shí)的計(jì)算任務(wù)或其他密集型任務(wù)??梢杂行У乇苊膺@些任務(wù)阻塞主線程,從而最大化系統(tǒng)的利用率,降
    的頭像 發(fā)表于 03-26 22:09 ?528次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>APP</b><b class='flag-5'>開(kāi)發(fā)</b>:【<b class='flag-5'>ArkTS</b><b class='flag-5'>類</b><b class='flag-5'>庫(kù)</b><b class='flag-5'>多線程</b>】<b class='flag-5'>TaskPool</b>和<b class='flag-5'>Worker</b>的<b class='flag-5'>對(duì)比</b>

    鴻蒙原生應(yīng)用開(kāi)發(fā)-ArkTS語(yǔ)言基礎(chǔ)庫(kù)多線程TaskPoolWorker對(duì)比(二)

    TaskPool運(yùn)作機(jī)制 圖1 TaskPool運(yùn)作機(jī)制示意圖 TaskPool支持開(kāi)發(fā)者在主線程封裝任務(wù)拋給任務(wù)隊(duì)列,系統(tǒng)選擇合適的工作
    發(fā)表于 03-26 15:25

    鴻蒙原生應(yīng)用開(kāi)發(fā)-ArkTS語(yǔ)言基礎(chǔ)庫(kù)多線程TaskPoolWorker對(duì)比(一)

    TaskPool(任務(wù)池)和Worker的作用是為應(yīng)用程序提供一個(gè)多線程的運(yùn)行環(huán)境,用于處理耗時(shí)的計(jì)算任務(wù)或其他密集型任務(wù)??梢杂行У乇苊膺@些任務(wù)阻塞主線程,從而最大化系統(tǒng)的利用率,降
    發(fā)表于 03-25 14:11

    鴻蒙原生應(yīng)用開(kāi)發(fā)-ArkTS語(yǔ)言基礎(chǔ)庫(kù)多線程并發(fā)概述

    的功能,它允許在不同的進(jìn)程間傳遞對(duì)象的引用,使得不同進(jìn)程之間可以共享對(duì)象的狀態(tài)和方法,服務(wù)提供者必須繼承此類。 二、TaskPoolWorker ArkTS提供了TaskPool
    發(fā)表于 03-22 15:40

    鴻蒙原生應(yīng)用開(kāi)發(fā)-ArkTS語(yǔ)言基礎(chǔ)庫(kù)多線程I/O密集型任務(wù)開(kāi)發(fā)

    filePath2 = ...; // 使用TaskPool執(zhí)行包含密集I/O的并發(fā)函數(shù) // 數(shù)組較大時(shí),I/O密集型任務(wù)任務(wù)分發(fā)也會(huì)搶占主線程,需要使用多線程能力
    發(fā)表于 03-21 14:57

    鴻蒙原生應(yīng)用開(kāi)發(fā)-ArkTS語(yǔ)言基礎(chǔ)庫(kù)多線程CPU密集型任務(wù)TaskPool

    CPU密集型任務(wù)是指需要占用系統(tǒng)資源處理大量計(jì)算能力的任務(wù),需要長(zhǎng)時(shí)間運(yùn)行,這段時(shí)間會(huì)阻塞線程其它事件的處理,不適宜放在主線程進(jìn)行。例如圖像處理、視頻編碼、數(shù)據(jù)分析等。 基于多線程并發(fā)機(jī)制處理CPU
    發(fā)表于 03-19 14:14

    鴻蒙原生應(yīng)用開(kāi)發(fā)-ArkTS語(yǔ)言基礎(chǔ)庫(kù)多線程@Concurrent裝飾器校驗(yàn)并發(fā)函數(shù)

    在使用TaskPool時(shí),執(zhí)行的并發(fā)函數(shù)需要使用該裝飾器修飾,否則無(wú)法通過(guò)相關(guān)校驗(yàn)。從API version 9開(kāi)始,該裝飾器支持在ArkTS卡片中使用。 裝飾器說(shuō)明 裝飾器使用示例 import
    發(fā)表于 03-18 10:30

    鴻蒙原生應(yīng)用開(kāi)發(fā)-ArkTS語(yǔ)言基礎(chǔ)庫(kù)概述

    ArkTS語(yǔ)言基礎(chǔ)庫(kù)是HarmonyOS系統(tǒng)上為應(yīng)用開(kāi)發(fā)者提供的常用基礎(chǔ)能力,主要包含能力如下圖所示。 1.提供異步并發(fā)和多線程并發(fā)的能
    發(fā)表于 03-05 15:42

    ArkTS語(yǔ)言基礎(chǔ)庫(kù)-解析

    ArkTS語(yǔ)言基礎(chǔ)庫(kù)是HarmonyOS系統(tǒng)上為應(yīng)用開(kāi)發(fā)者提供的常用基礎(chǔ)能力,主要包含能力如下圖所示。 圖1 ArkTS語(yǔ)言基礎(chǔ)
    發(fā)表于 02-20 16:44