在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

鴻蒙OS開發實例:【ArkTS類庫多線程CPU密集型任務TaskPool】

jf_46214456 ? 來源:jf_46214456 ? 作者:jf_46214456 ? 2024-04-01 22:25 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

CPU密集型任務是指需要占用系統資源處理大量計算能力的任務,需要長時間運行,這段時間會阻塞線程其它事件的處理,不適宜放在主線程進行。例如圖像處理、視頻編碼、數據分析等。

基于多線程并發機制處理CPU密集型任務可以提高CPU利用率,提升應用程序響應速度。

當進行一系列同步任務時,推薦使用Worker;而進行大量或調度點較為分散的獨立任務時,不方便使用8個Worker去做負載管理,推薦采用TaskPool。接下來將以圖像直方圖處理以及后臺長時間的模型預測任務分別進行舉例。

使用TaskPool進行圖像直方圖處理

1.實現圖像處理的業務邏輯。

2.數據分段,將各段數據通過不同任務的執行完成圖像處理。

3.創建Task,通過execute()執行任務,在當前任務結束后,會將直方圖處理結果同時返回。

結果數組匯總處理。

搜狗高速瀏覽器截圖20240326151344.png

import taskpool from '@ohos.taskpool';

@Concurrent
function imageProcessing(dataSlice: ArrayBuffer) {
  // 步驟1: 具體的圖像處理操作及其他耗時操作
  return dataSlice;
}

function histogramStatistic(pixelBuffer: ArrayBuffer) {
  // 步驟2: 分成三段并發調度
  let number = pixelBuffer.byteLength / 3;
  let buffer1 = pixelBuffer.slice(0, number);
  let buffer2 = pixelBuffer.slice(number, number * 2);
  let buffer3 = pixelBuffer.slice(number * 2);

  let task1 = new taskpool.Task(imageProcessing, buffer1);
  let task2 = new taskpool.Task(imageProcessing, buffer2);
  let task3 = new taskpool.Task(imageProcessing, buffer3);

  taskpool.execute(task1).then((ret: ArrayBuffer[]) = > {
    // 步驟3: 結果處理
  });
  taskpool.execute(task2).then((ret: ArrayBuffer[]) = > {
    // 步驟3: 結果處理
  });
  taskpool.execute(task3).then((ret: ArrayBuffer[]) = > {
    // 步驟3: 結果處理
  });
}

@Entry
@Component
struct Index {
  @State message: string = 'Hello World'

  build() {
    Row() {
      Column() {
        Text(this.message)
          .fontSize(50)
          .fontWeight(FontWeight.Bold)
          .onClick(() = > {
            let data: ArrayBuffer;
            histogramStatistic(data);
          })
      }
      .width('100%')
    }
    .height('100%')
  }
}

審核編輯 黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • cpu
    cpu
    +關注

    關注

    68

    文章

    11070

    瀏覽量

    216769
  • 多線程
    +關注

    關注

    0

    文章

    279

    瀏覽量

    20404
  • 鴻蒙
    +關注

    關注

    59

    文章

    2594

    瀏覽量

    43961
  • 鴻蒙OS
    +關注

    關注

    0

    文章

    191

    瀏覽量

    4962
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    HarmonyOS CPU與I/O密集型任務開發指導

    。 基于多線程并發機制處理CPU密集型任務可以提高CPU利用率,提升應用程序響應速度。 當進行一系列同步
    的頭像 發表于 02-18 10:17 ?1236次閱讀
    HarmonyOS <b class='flag-5'>CPU</b>與I/O<b class='flag-5'>密集型</b><b class='flag-5'>任務</b><b class='flag-5'>開發</b>指導

    ArkTS語言基礎-解析

    ArkTS語言基礎是HarmonyOS系統上為應用開發者提供的常用基礎能力,主要包含能力如下圖所示。 圖1 ArkTS語言基礎
    發表于 02-20 16:44

    鴻蒙原生應用開發-ArkTS語言基礎概述

    ArkTS語言基礎是HarmonyOS系統上為應用開發者提供的常用基礎能力,主要包含能力如下圖所示。 1.提供異步并發和多線程并發的能
    發表于 03-05 15:42

    鴻蒙原生應用開發-ArkTS語言基礎多線程CPU密集型任務TaskPool

    CPU密集型任務是指需要占用系統資源處理大量計算能力的任務,需要長時間運行,這段時間會阻塞線程其它事件的處理,不適宜放在主
    發表于 03-19 14:14

    鴻蒙原生應用開發-ArkTS語言基礎多線程I/O密集型任務開發

    使用異步并發可以解決單次I/O任務阻塞的問題,但是如果遇到I/O密集型任務,同樣會阻塞線程中其它任務的執行,這時需要使用
    發表于 03-21 14:57

    鴻蒙原生應用開發-ArkTS語言基礎多線程TaskPool和Worker的對比(一)

    TaskPool任務池)和Worker的作用是為應用程序提供一個多線程的運行環境,用于處理耗時的計算任務或其他密集型
    發表于 03-25 14:11

    鴻蒙原生應用開發-ArkTS語言基礎多線程TaskPool和Worker的對比(二)

    TaskPool運作機制 圖1 TaskPool運作機制示意圖 TaskPool支持開發者在主線程封裝
    發表于 03-26 15:25

    CPU密集型任務開發指導

    CPU密集型任務是指需要占用系統資源處理大量計算能力的任務,需要長時間運行,這段時間會阻塞線程其它事件的處理,不適宜放在主
    發表于 06-19 06:05

    I/O密集型任務開發指導

    使用異步并發可以解決單次I/O任務阻塞的問題,但是如果遇到I/O密集型任務,同樣會阻塞線程中其它任務的執行,這時需要使用
    發表于 06-19 07:19

    什么時候要使用多線程

    什么時候要使用多線程cpu密集型:(比如一個while( true ){ i++;})IO密集型:(比如一個從磁盤拷貝數據到另一個磁盤的拷貝進程)1)計算
    發表于 09-06 07:25

    HarmonyOS CPU與I/O密集型任務開發指導

    一、CPU密集型任務開發指導 CPU密集型任務是指需
    發表于 09-26 16:29

    HarmonyOS語言基礎開發指南上線啦!

    并發能力,適用于單次I/O任務開發場景。 ○ TaskPool和Worker提供多線程并發能力,適用于CPU
    發表于 10-18 16:36

    鴻蒙APP開發:【ArkTS多線程TaskPool和Worker的對比

    TaskPool任務池)和Worker的作用是為應用程序提供一個多線程的運行環境,用于處理耗時的計算任務或其他密集型
    的頭像 發表于 03-26 22:09 ?973次閱讀
    <b class='flag-5'>鴻蒙</b>APP<b class='flag-5'>開發</b>:【<b class='flag-5'>ArkTS</b><b class='flag-5'>類</b><b class='flag-5'>庫</b><b class='flag-5'>多線程</b>】<b class='flag-5'>TaskPool</b>和Worker的對比

    鴻蒙OS開發實例:【ArkTS多線程I/O密集型任務開發

    使用異步并發可以解決單次I/O任務阻塞的問題,但是如果遇到I/O密集型任務,同樣會阻塞線程中其它任務的執行,這時需要使用
    的頭像 發表于 04-01 16:32 ?880次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>OS</b><b class='flag-5'>開發</b><b class='flag-5'>實例</b>:【<b class='flag-5'>ArkTS</b><b class='flag-5'>類</b><b class='flag-5'>庫</b><b class='flag-5'>多線程</b>I/O<b class='flag-5'>密集型</b><b class='flag-5'>任務</b><b class='flag-5'>開發</b>】

    鴻蒙開發:【線程模型】

    管理其他線程ArkTS引擎實例,例如使用TaskPool任務池)創建任務或取消
    的頭像 發表于 06-13 16:38 ?725次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>開發</b>:【<b class='flag-5'>線程</b>模型】
    主站蜘蛛池模板: 伊人啪啪网 | 特级毛片aaa免费版 特级毛片a级毛免费播放 | 四虎影院永久免费观看 | 久久婷婷成人综合色 | 在线天堂bt中文www在线 | 五月婷婷色视频 | 免费看国产黄色片 | 四虎影院永久免费观看 | 欧美成人免费网站 | 高清一区二区在线观看 | 亚洲一级视频在线观看 | 亚洲综合色色图 | 亚洲综合涩| 美女毛片免费看 | 亚洲色图2 | 在线精品小视频 | 一级毛片真人免费观看 | 久久综合九色 | 欧美成人eee在线 | 一区在线免费观看 | 亚洲第一免费播放区 | 成人伊在线影院 | 国产视频久| 四虎在线永久免费视频网站 | 美女用手扒开尿口给男生桶爽 | 天堂网ww | 欧美专区一区二区三区 | 色老板女色狠xx网 | 天天做天天爱天天爽 | 日韩爽片| 欧美成人影院 | 日本三级吹潮 | 国产呦在线观看视频 | 美女被异性狂揉下部羞羞视频 | 西西人体44rt高清午夜 | 手机在线观看国产精选免费 | 无遮挡高清一级毛片免费 | 亚洲免费在线观看视频 | 亚洲精品卡1卡二卡3卡四卡 | 午夜精品久久久 | 在线色资源 |