0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

鸿蒙OS开发实例:【ArkTS类库多线程@Concurrent装饰器校验并发函数】

jf_46214456 来源:jf_46214456 作者:jf_46214456 2024-04-02 14:45 次阅读

在使用TaskPool时,执行的并发函数需要使用该装饰器修饰,否则无法通过相关校验。从API version 9开始,该装饰器支持在ArkTS卡片中使用。

装饰器说明

@Concurrent并发装饰器说明
装饰器参数无。
使用场景仅支持在Stage模型的工程中使用。
装饰的函数类型允许标注async函数或普通函数。禁止标注generator、箭头函数、method。不支持类成员函数或者匿名函数。
装饰的函数内的变量类型允许使用local变量、入参和通过import引入的变量。禁止使用闭包变量。

装饰器使用示例

搜狗高速浏览器截图20240326151450.png

鸿蒙NEXT学习文档+mau123789是v喔1
import taskpool from '@ohos.taskpool';

@Concurrent
function add(num1: number, num2: number): number {
  return num1 + num2;
}

async function ConcurrentFunc(): Promise< void > {
  try {
    let task: taskpool.Task = new taskpool.Task(add, 1, 2);
    console.info("taskpool res is: " + await taskpool.execute(task));
  } catch (e) {
    console.error("taskpool execute error is: " + e);
  }
}

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

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

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 多线程
    +关注

    关注

    0

    文章

    273

    浏览量

    19773
  • 鸿蒙
    +关注

    关注

    55

    文章

    2103

    浏览量

    42273
  • 鸿蒙OS
    +关注

    关注

    0

    文章

    191

    浏览量

    4313
收藏 人收藏

    评论

    相关推荐

    鸿蒙OS开发实例:【ArkTS类库多线程CPU密集型任务TaskPool】

    CPU密集型任务是指需要占用系统资源处理大量计算能力的任务,需要长时间运行,这段时间会阻塞线程其它事件的处理,不适宜放在主线程进行。例如图像处理、视频编码、数据分析等。 基于多线程并发
    的头像 发表于 04-01 22:25 464次阅读
    <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>CPU密集型任务TaskPool】

    ArkTS语言基础-解析

    ArkTS语言基础是HarmonyOS系统上为应用开发者提供的常用基础能力,主要包含能力如下图所示。 图1 ArkTS语言基础
    发表于 02-20 16:44

    鸿蒙原生应用开发-ArkTS语言基础概述

    ArkTS语言基础是HarmonyOS系统上为应用开发者提供的常用基础能力,主要包含能力如下图所示。 1.提供异步并发
    发表于 03-05 15:42

    鸿蒙原生应用开发-ArkTS语言基础多线程@Concurrent装饰校验并发函数

    在使用TaskPool时,执行的并发函数需要使用该装饰修饰,否则无法通过相关校验。从API version 9开始,该装饰
    发表于 03-18 10:30

    鸿蒙原生应用开发-ArkTS语言基础多线程CPU密集型任务TaskPool

    CPU密集型任务是指需要占用系统资源处理大量计算能力的任务,需要长时间运行,这段时间会阻塞线程其它事件的处理,不适宜放在主线程进行。例如图像处理、视频编码、数据分析等。 基于多线程并发
    发表于 03-19 14:14

    鸿蒙原生应用开发-ArkTS语言基础多线程I/O密集型任务开发

    filePath2 = ...; // 使用TaskPool执行包含密集I/O的并发函数 // 数组较大时,I/O密集型任务任务分发也会抢占主线程,需要使用多线程能力
    发表于 03-21 14:57

    鸿蒙原生应用开发-ArkTS语言基础多线程并发概述

    的一系列复杂偶发的问题,同时并发度也相对较高,因此得到了广泛的支持和使用,也是当前ArkTS语言选择的并发模型。 由于Actor模型的内存隔离特性,所以需要进行跨线程的数据序列化传输。
    发表于 03-22 15:40

    鸿蒙原生应用开发-ArkTS语言基础多线程TaskPool和Worker的对比(三)

    一、TaskPool注意事项 实现任务的函数需要使用装饰@Concurrent标注,且仅支持在.ets文件中使用。 实现任务的函数入参需满
    发表于 03-27 16:26

    鸿蒙原生应用开发-ArkTS语言基础多线程并发概述

    的一系列复杂偶发的问题,同时并发度也相对较高,因此得到了广泛的支持和使用,也是当前ArkTS语言选择的并发模型。 由于Actor模型的内存隔离特性,所以需要进行跨线程的数据序列化传输。
    发表于 03-28 14:35

    HarmonyOS使用多线程并发能力开发

    代表,不需要开发者去面对锁带来的一系列复杂偶发的问题,同时并发度也相对较高,因此得到了广泛的支持和使用,也是当前ArkTS语言选择的并发模型。 由于Actor模型的内存隔离特性,所以需
    发表于 09-25 15:23

    HarmonyOS语言基础开发指南上线啦!

    语言基础提供哪些功能?多线程并发如何实现?TaskPool(任务池)和Worker在实现和使用场景上有何不同? 针对开发者关注的
    发表于 10-18 16:36

    鸿蒙 OS 应用开发初体验

    的 IDE、鸿蒙生态的开发语言 ArkTS,通过模拟运行起来了鸿蒙 OS 版 HelloWor
    发表于 11-02 19:38

    Linux 多线程可重入函数

    在单线程程序中,整个程序都是顺序执行的,一个函数在同一时刻只能被一个函数调用,但在多线程中,由于并发性,一个
    发表于 05-16 17:41 853次阅读

    mfc多线程编程实例

    (图形用户界面)应用程序的开发。在这篇文章中,我们将重点介绍MFC中的多线程编程。 多线程编程在软件开发中非常重要,它可以实现程序的并发执行
    的头像 发表于 12-01 14:29 718次阅读

    鸿蒙OS开发实例:【ArkTS类库多线程I/O密集型任务开发

    使用异步并发可以解决单次I/O任务阻塞的问题,但是如果遇到I/O密集型任务,同样会阻塞线程中其它任务的执行,这时需要使用多线程并发能力来进行解决。 I/O密集型任务的性能重点通常
    的头像 发表于 04-01 16:32 207次阅读
    <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>I/O密集型任务<b class='flag-5'>开发</b>】