色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

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

jf_46214456 ? 2024-04-01 16:32 ? 次閱讀

使用異步并發可以解決單次I/O任務阻塞的問題,但是如果遇到I/O密集型任務,同樣會阻塞線程中其它任務的執行,這時需要使用多線程并發能力來進行解決。

I/O密集型任務的性能重點通常不在于CPU的處理能力,而在于I/O操作的速度和效率。這種任務通常需要頻繁地進行磁盤讀寫、網絡通信等操作。此處以頻繁讀寫系統文件來模擬I/O密集型并發任務的處理。

定義并發函數,內部密集調用I/O能力。

import fs from '@ohos.file.fs';

// 定義并發函數,內部密集調用I/O能力
@Concurrent
async function concurrentTest(fileList: string[]) {
  // 寫入文件的實現
  async function write(data, filePath) {
    let file = await fs.open(filePath, fs.OpenMode.READ_WRITE);
    await fs.write(file.fd, data);
    fs.close(file);
  }
  // 循環寫文件操作
  for (let i = 0; i < fileList.length; i++) {
    write('Hello World!', fileList[i]).then(() = > {
      console.info(`Succeeded in writing the file. FileList: ${fileList[i]}`);
    }).catch((err) = > {
      console.error(`Failed to write the file. Code is ${err.code}, message is ${err.message}`)
      return false;
    })
  }
  return true;
}

開始前熟悉鴻蒙文檔

鴻蒙OS開發更多內容↓點擊HarmonyOSOpenHarmony技術
鴻蒙技術文檔《鴻蒙NEXT星河版開發學習文檔》

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

使用TaskPool執行包含密集I/O的并發函數:通過調用execute()方法執行任務,并在回調中進行調度結果處理。示例中的filePath1和filePath2的獲取方式請參見獲取應用文件路徑。

import taskpool from '@ohos.taskpool';

let filePath1 = ...; // 應用文件路徑
let filePath2 = ...;

// 使用TaskPool執行包含密集I/O的并發函數
// 數組較大時,I/O密集型任務任務分發也會搶占主線程,需要使用多線程能力
taskpool.execute(concurrentTest, [filePath1, filePath2]).then((ret) = > {
  // 調度結果處理
  console.info(`The result: ${ret}`);
})

本文參考引用HarmonyOS官方開發文檔,基于API9。

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

    關注

    0

    文章

    278

    瀏覽量

    20016
  • 鴻蒙
    +關注

    關注

    57

    文章

    2368

    瀏覽量

    42899
  • 鴻蒙OS
    +關注

    關注

    0

    文章

    189

    瀏覽量

    4456
收藏 人收藏

    評論

    相關推薦

    鴻蒙開發:【線程模型】

    管理其他線程ArkTS引擎實例,例如使用TaskPool(任務池)創建任務或取消任務、啟動和終
    的頭像 發表于 06-13 16:38 ?426次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>開發</b>:【<b class='flag-5'>線程</b>模型】

    鴻蒙OS開發實例:【ArkTS單次I/O任務開發

    Promise和async/await提供異步并發能力,適用于單次I/O任務的場景開發,本文以使用異步進行單次文件寫入為例來提供指導。
    的頭像 發表于 04-02 21:03 ?337次閱讀
    <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'>I</b>/<b class='flag-5'>O</b><b class='flag-5'>任務</b><b class='flag-5'>開發</b>】

    鴻蒙OS開發實例:【ArkTS多線程@Concurrent裝飾器校驗并發函數】

    在使用TaskPool時,執行的并發函數需要使用該裝飾器修飾,否則無法通過相關校驗。從API version 9開始,該裝飾器支持在ArkTS卡片中使用。
    的頭像 發表于 04-02 14:45 ?700次閱讀
    <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>@Concurrent裝飾器校驗并發函數】

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

    CPU密集型任務是指需要占用系統資源處理大量計算能力的任務,需要長時間運行,這段時間會阻塞線程其它事件的處理,不適宜放在主線程進行。例如圖像
    的頭像 發表于 04-01 22:25 ?857次閱讀
    <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>CPU<b class='flag-5'>密集型</b><b class='flag-5'>任務</b>TaskPool】

    鴻蒙OS開發案例:【ArkTS多線程CPU密集型任務Worker】

    通過某地區提供的房價數據訓練一個簡易的房價預測模型,該模型支持通過輸入房屋面積和房間數量去預測該區域的房價,模型需要長時間運行,房價預測需要使用前面的模型運行結果,因此需要使用Worker。
    的頭像 發表于 04-01 21:55 ?1138次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>OS</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>CPU<b class='flag-5'>密集型</b><b class='flag-5'>任務</b>Worker】

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

    并發模型是用來實現不同應用場景中并發任務的編程模型,常見的并發模型分為基于內存共享的并發模型和基于消息通信的并發模型。 Actor并發模型作為基于消息通信并發模型的典型代表,不需要開發者去面對鎖帶來
    發表于 03-28 14:35

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

    TaskPool(任務池)和Worker的作用是為應用程序提供一個多線程的運行環境,用于處理耗時的計算任務或其他密集型任務。可以有效地避免這
    的頭像 發表于 03-26 22:09 ?661次閱讀
    <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>】TaskPool和Worker的對比

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

    TaskPool運作機制 圖1 TaskPool運作機制示意圖 TaskPool支持開發者在主線程封裝任務拋給任務隊列,系統選擇合適的工作線程
    發表于 03-26 15:25

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

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

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

    使用異步并發可以解決單次I/O任務阻塞的問題,但是如果遇到I/O密集型
    發表于 03-21 14:57

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

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

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

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

    鴻蒙原生應用開發-ArkTS語言基礎單次I/O任務開發

    Promise和async/await提供異步并發能力,適用于單次I/O任務的場景開發,本文以使用異步進行單次文件寫入為例來提供指導。 實現單次I
    發表于 03-04 14:07

    ArkTS語言基礎-解析

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

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

    一、CPU密集型任務開發指導 CPU密集型任務是指需要占用系統資源處理大量計算能力的任務,需要長
    的頭像 發表于 02-18 10:17 ?982次閱讀
    HarmonyOS CPU與<b class='flag-5'>I</b>/<b class='flag-5'>O</b><b class='flag-5'>密集型</b><b class='flag-5'>任務</b><b class='flag-5'>開發</b>指導
    主站蜘蛛池模板: 免费果冻传媒在线完整观看| 亚洲欧洲自拍偷拍| 99国产精品久久久久久久日本竹| 乱码AV午夜噜噜噜噜| a级全黄试频试看30分钟| 日韩亚洲中文欧美在线| 国产免国产免费| 中国女人内谢69XXXXXA片| 青青精品视频国产| 国产免费播放一区二区三区| 阴茎插入阴道| 日韩a在线看免费观看视频| 国产人在线成免费视频| 2020久久精品永久免费| 色欲av蜜臀av高清| 久久免费高清| 国产电影无码午夜在线播放| 伊人激情综合网| 日产久久视频| 久久青青草原综合伊人| 超级最爽的乱淫片免费| 夜夜澡人人爽人人喊_欧美| 青青青草免费| 久久精品国产免费播放| 国产成人免费a在线资源| 24小时日本在线观看片| 天堂无码人妻精品AV一区| 蜜臀色欲AV无人A片一区| 国产网址在线观看| 超大号黑吊magnet| 最近中文字幕MV高清在线| 小妇人电影免费完整观看2021| 男女后进式猛烈xx00动态图片| 国产一区私人高清影院| 超碰免费碰免费视频| 最近的2019中文字幕国语完整版 | 2021国产在线视频| 亚洲 自拍 欧洲 视频二区| 日本阿v片在线播放免费| 乱爱性全过程免费视频| 精品国产人成亚洲区|