鸿蒙编程江湖:并发编程基础与鸿蒙中的任务并发

贝塞尔曲线原理--曲线生成--路径规划--matlab代码 贝塞尔曲线有着很多特殊的性质, 在图形设计和路径规划中应用都非常广泛, 在路径规划中贝塞尔曲线完全由其控制点决定其形状, n个控制点对应着n-1阶的贝塞尔曲线,并且可以通过递归的方式来绘制. 阅读详情

本文旨在深入探讨华为鸿蒙HarmonyOS Next系统(截止目前API12)的技术细节,基于实际开发实践进行总结。主要作为技术分享与交流载体,难免错漏,欢迎各位同仁提出宝贵意见和问题,以便共同进步。本文为原创内容,任何形式的转载必须注明出处及原作者。

并发编程是指在同一时间段内处理多个任务的能力。并发编程可以提高应用程序的响应速度和效率,并避免耗时任务阻塞主线程,导致应用程序卡顿。
鸿蒙系统提供了多种并发模型,其中 TaskPool 和 Worker 是两种常用的并发能力。

  • TaskPool:TaskPool 是一个多线程运行环境,它提供了任务的执行、取消、优先级设置等功能。TaskPool 适用于独立任务,例如计算密集型任务、I/O 密集型任务等。
  • Worker:Worker 是一个可以长时间运行的后台线程,它支持与宿主线程之间的消息传递。Worker 适用于长时间运行的任务,例如后台数据处理、模型训练等。

@Concurrent 装饰器的用途与用法

在鸿蒙系统中,@Concurrent 装饰器用于声明并校验并发函数。从 API version 9 开始,支持使用 @Concurrent 装饰器声明并校验并发函数。
装饰器用法:

@Concurrent
function myConcurrentFunction() {
  // 并发函数的代码
}

装饰器参数:无。
使用场景:仅支持在 Stage 模型的工程中使用。仅支持在 .ets 文件中使用。
装饰的函数类型:允许标注 async 函数或普通函数。禁止标注 generator、箭头函数、method。不支持类成员函数或者匿名函数。
装饰的函数内的变量类型:允许使用 local 变量、入参和通过 import 引入的变量。禁止使用闭包变量。
装饰的函数内的返回值类型:支持的类型请查序列化支持类型。

并发函数的声明与校验

并发函数是指可以在 TaskPool 中执行的函数。声明并发函数需要使用 @Concurrent 装饰器进行修饰,并进行必要的校验。
示例:

import { taskpool } from '@kit.ArkTS';
@Concurrent
function add(num1: number, num2: number): number {
  return num1 + num2;
}

并发函数注意事项:

  • 并发函数必须使用 @Concurrent 装饰器进行修饰。
  • 并发函数的入参和返回值类型必须支持序列化。
  • 并发函数内不允许使用闭包变量。
  • 并发函数执行时间不能超过 3 分钟。

Actor 并发模型与内存共享模型的对比

Actor 并发模型:

  • 每个 Actor 都拥有独立的内存空间。
  • Actor 之间通过消息传递机制进行通信。
  • Actor 并发模型避免了内存竞争问题。
    内存共享模型:
  • 多个线程共享同一块内存空间。
  • 线程访问内存需要抢占锁。
  • 内存共享模型容易出现数据竞争问题。
    对比:
  • Actor 并发模型更适合并发编程,因为它避免了内存竞争问题。
  • 内存共享模型更适合共享内存的场景,例如多线程计算。

TaskPool 中执行并发函数的基本示例

以下是一个简单的示例,演示如何在 TaskPool 中执行并发函数:

import { taskpool } from '@kit.ArkTS';
@Concurrent
function add(num1: number, num2: number): number {
  return num1 + num2;
}
async function concurrentFunc() {
  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%');
  }
}

这段代码定义了一个名为 Index 的组件,并在组件中显示了一条文本消息 “Hello World”。点击按钮会执行 concurrentFunc 函数,该函数创建一个并发任务并执行它。任务完成后,会在控制台输出结果。

总结

通过以上介绍,您可以了解到鸿蒙系统中的并发模型和 @Concurrent 装饰器的使用方法。使用并发编程可以有效地提高应用程序的响应速度和效率,并避免耗时任务阻塞主线程。希望本文能够帮助您掌握鸿蒙系统中的并发编程技术,并开发出更优秀的鸿蒙应用。

李大勇matlab密码,基于MatlabSimulink的太阳能热水系统仿真研究 沈超.doc 基于MatlabSimulink的太阳能热水系统仿真研究 沈超中国工程热物理学会 工程热力学与能源利用 编号:141090基于Matlab/Simulink的太阳能热水系统仿真研究沈 超1 1 余 鹏1 李洪欣1 魏新利2郑州大学土木工程学院,郑州 450001郑州大学化工与能源学院,郑州 45... 阅读详情

相关推荐

抖音a_bogus参数逆向避坑指南:从环境检测到XHR请求的全流程解析

本文详细解析了抖音a_bogus参数在v1.0.1.19版本下的逆向工程全流程,重点介绍了如何通过PyV8Env框架进行有效的补环境操作,以绕过严格的环境检测。内容涵盖从环境初始化、关键事件触发到模拟XHR请求获取签名的完整步骤,并提供了可运行的Python代码示例和常见检测点的避坑指南,帮助开发者稳定生成有效的a_bogus参数。

tech5的博客 599

鸿蒙编程江湖:HarmonyOS 和 ArkTS 基本概念

通过以上介绍,您可以了解到华为鸿蒙系统和 ArkTS 编程语言的基本概念和使用方法。鸿蒙系统是一个强大的操作系统,而 ArkTS 是一个功能丰富的编程语言,可以帮助您轻松地开发鸿蒙应用。希望本文能够帮助您入门鸿蒙开发,并开启您的鸿蒙应用开发之旅。

same4869的博客 1443

3D Slicer:从入门到精通(二)——入门指南

本篇文章包含开始使用3D Slicer所需的信息,包括如何安装和快速开始使用基本功能,以及在哪里找到更多信息。

walt3433的博客 2万+

鸿蒙编程江湖:深入理解TaskPool和Worker的并发任务执行

通过以上介绍,您可以了解到鸿蒙系统中的 TaskPool 和 Worker 并发能力的使用方法。TaskPool 和 Worker 都是基于 Actor 并发模型实现的,但它们的使用场景和功能有所不同。希望本文能够帮助您掌握鸿蒙系统中的并发编程技术,并开发出更优秀的鸿蒙应用。

same4869的博客 1074

数据字典实战:如何用Excel快速搭建你的第一个数据字典(附模板下载)

本文针对中小团队在软件开发中面临的术语不一致问题,提供了一套使用Excel快速搭建数据字典的实战指南。文章详细讲解了核心字段设计、填充示例、高阶技巧及团队协作维护流程,旨在通过这一轻量级工具统一团队共识、提升开发效率,并附有实用模板下载。

weixin_29303701的博客 380

OpenAI Realtime API实时语音交互实战指南

实时语音交互是人机自然对话的核心能力,其本质在于构建低延迟、双向、流式协同的音频-语义闭环。它突破传统REST API的请求-响应范式,依托WebSocket实现毫秒级音频输入流(audio.delta)、模型生成流(text/audio.delta)与动态控制流(session.update)三重并行。该技术显著降低端到端延迟至300ms以内,支撑语音助手、智能客服、对话式教育等强实时场景。本文聚焦OpenAI Realtime API的工程落地,详解PCM音频流处理、VAD语音活动检测、AudioCon

weixin_32285357的博客 390

鸿蒙编程江湖:ArkTS 容器与原生容器在行为上的差异

通过以上介绍,您可以了解到鸿蒙系统中 ArkTS 容器与原生容器的差异,以及 ArkTS 容器在并发中的应用。希望本文能够帮助您掌握鸿蒙系统中的并发编程技术,并开发出更优秀的鸿蒙应用。

same4869的博客 862

工厂自动化布线实战:从功率计算到线槽布局的完整避坑指南

本文详细介绍了工厂自动化布线的实战经验,从功率计算到线槽布局的完整避坑指南。通过三步计算法确定线径需求,强调电压降控制的重要性,并分享线槽布局的50%法则和强弱电分离技巧。特别针对移动设备和多芯信号线提供专业解决方案,帮助工程师避免常见错误,提升布线效率和质量。

weixin_29266007的博客 350

鸿蒙编程江湖:I/O 密集型任务处理及 ArkTS 的异步锁机制

使用异步编程技术和异步锁机制可以提高 I/O 操作的效率,并避免死锁问题。踏入鸿蒙世界的敲门砖,标志着您在技术征途上的全新起点,提升就业竞争力,获得行业认可,点亮职业成长先机,快人一步抢占未来应用开发赛道!例如 Promise 和 async/await,可以使 I/O 操作异步执行,避免阻塞线程,提高应用程序的响应速度。例如 TaskPool 和 Worker,可以将 I/O 任务分配到不同的线程中执行,提高 I/O 操作的效率。例如使用缓存机制,可以减少 I/O 操作的次数,提高 I/O 操作的效率。

xinyuan82的博客 488

NET 实战:30 天搞定企业级 Web 订餐系统(附完整源码 + 数据库设计)

订餐流程:浏览菜品 → 选择菜品及数量 → 填写送餐地址 → 提交订单 → 数据库记录核心代码(绑定菜品列表):vb' 绑定菜单表到DataGrid控件,展示菜品信息user id=sa;' 查询菜品名称、价格、口味Dim adpt1 As New SqlDataAdapter("select cdishid,vdishname 菜品名称,cdishrate 价格,vdishdescription 口味 from dish", conn)End Sub用户体验优化。

m0_67740236的博客 1517

2025年09月中国电子学会青少年软件编程(Python)等级考试试卷(一级)答案 + 解析

2025年09月中国电子学会青少年软件编程(Python)等级考试试卷(一级)答案 + 解析

伶俐角少儿编程 639

鸿蒙编程江湖:ArkTS中Sendable数据在并发实例间的传递

Sendable 协议定义了 ArkTS 的可共享对象体系及其规格约束。符合 Sendable 协议的数据(以下简称 Sendable 数据)可以在 ArkTS 并发实例间传递。Sendable 数据的特点可序列化:Sendable 数据可以被序列化,以便在并发实例间传递。线程安全:Sendable 数据在并发实例间传递时,保证了数据的线程安全。共享或拷贝:Sendable 数据在并发实例间传递时,可以选择引用传递或拷贝传递。通过以上介绍,您可以了解到鸿蒙系统中 Sendable 数据的传递机制。

same4869的博客 610

基于Scrapy+Playwright的学术会议信息智能爬取系统实战

本文详细介绍如何使用Python构建一个高效的学术会议信息爬取系统,结合Scrapy框架和Playwright无头浏览器技术,实现对全球学术会议数据的自动化采集、清洗和存储。文章包含完整的技术方案设计、代码实现细节以及性能优化策略,可帮助读者快速掌握现代网络爬虫开发的核心技术。关键词:Python爬虫、Scrapy、Playwright、学术会议、数据采集、反爬对抗python复制下载。

2201_76125261的博客 710

鸿蒙编程江湖:ArkTS 的多线程与序列化支持

通过本文的探讨,您现在可能对 ArkTS 的多线程和序列化支持有了更为全面的认识。这些高级特性为鸿蒙应用开发提供了强大的性能优化工具,但同时也要求咱们开发者具备更高的技术素养和经验。

same4869的博客 780

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

鸿蒙编程江湖:异步编程的优势及 Promise的应用

Promise 定义Promise 是一个对象,它代表了异步操作的结果。Promise 有三种状态:pending(进行中)、fulfilled(已完成)和 rejected(已拒绝)。Promise 使用创建 Promise// 异步操作的代码});使用 then 方法// 处理成功的回调// 处理失败的回调});使用 async/await// 处理结果通过以上介绍,您可以了解到鸿蒙系统中异步编程的两种方式:Promise 和 async/await。

same4869的博客 510

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

个人对鸿蒙系统的看法

2021新思维:1+1=1;1+2=1;3+4=1?绝了 有书共读 02-19 · 《有书》官方账号 在开始今天的话题前,我们先来看这样一组等式: 1+1=1;1+2=1;3+4=1;5+7=1;6+18=1; 当你看到这组等式,大脑的直觉会瞬间告诉你:这根本不可能! 但是如果稍加思考后换一种视角,在每个数字的后面加上单位,那就变成了如下等式: 1里+1里=1公里; 1个月+2个月=1个季度; 3天+4天=1周; 5个月+7个月=1年; 6小时+18小时=1天; 现在这组等式就完全成立了! 由此可见,人的大

wangxi06的专栏 1357

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

鸿蒙编程江湖:ArkUI 的声明式 UI 编程与状态管理

通过以上介绍,您可能对ArkUI的声明式UI编程和状态管理有了更深入的了解。声明式UI编程不仅简化了代码,还提高了开发效率和应用的性能。希望本文能够帮助您更好地掌握ArkUI,并在鸿蒙应用开发中发挥其强大的功能。

same4869的博客 654

鸿蒙编程江湖:ArkTS开发综合案例与最佳实践

在掌握了ArkTS的基础知识和高级特性之后,是时候将所学应用于实际项目中,构建一个复杂且高效的鸿蒙应用了。本文将综合前几篇的所有知识点,带领您走过一个完整的应用开发流程,从设计理念到代码实现,再到性能调优,每一步都是最佳实践的体现。通过本篇的综合案例与最佳实践,您应该能够掌握如何将ArkTS的高级特性应用于实际的鸿蒙应用开发中。从设计到实现,再到性能调优,每一步都需要精心规划和不断的实践。希望本文能够为您提供清晰的指导和帮助,让您在鸿蒙应用开发的道路上更进一步。

same4869的博客 807

华为鸿蒙系统前身,鸿蒙OS四大看点详解!华为的野心不止手机,而是“一统江湖”...

华为开发者大会于今日在东莞松山湖召开,会上,华为消费者业务正式推出了其全新的基于微内核的面向全场景的分布式操作系统——鸿蒙OS。华为消费者业务CEO余承东在主体演讲上表示,在过去的传统模式下,每一类新形态终端的出现,都会伴随新的操作系统的诞生。“无论是在PC时代,还是移动互联时代,还是5G即将催生的物联时代,不同的时代催生不同的操作系统。”因此,面对即将到来全场景智慧时代,“也应该有相对应的操作系...

weixin_39583222的博客 358

华为鸿蒙申请要多久,鸿蒙审核需要多久?

电梯直达huafen799504432新学乍练发表于 2020-12-18 14:24:39来自:HUAWEI Mate 30 5G最新回复 2020-12-19 09:36:25Screenshot_20201218_142336_com.huawei.allianceapp.jpg (149.85 KB, 下载次数: 1)2020-12-18 14:24 上传孤乃江东九牧渐入佳境发表于 202...

weixin_39637571的博客 3944

鸿蒙OS权限管理与应用沙箱机制优化全解剖——从微内核架构到高并发挑战的系统性思考!

权限系统和沙箱机制是系统安全的“底座”高并发挑战了沙箱的“性能边界”我们提出的优化策略(DPS)让鸿蒙系统既安全又高效如果你觉得这篇文章对你有帮助,或者有任何想法、建议,欢迎在评论区留言交流!我是一个在代码世界里不断摸索的小码农,愿我们都能在成长的路上越走越远,越学越强!✍️ 作者:某个被流“治愈”过的 Java 老兵📅 日期:2025-07-24🧵 本文原创,转载请注明出处。

欢迎来到菜鸟不学编程的博客 1587

车载OS大盘点及市场发展格局分析

一:车载OS几大系统介绍OS,英文全称operating system,即操作系统,意思是指用于管理计算机硬件和软件资源,并提供通用服务的计算机程序。对于我们日常接触的OS而言,操作系统...

Peter的专栏 1万+

华为鸿蒙审核几天,鸿蒙审核需要多久?

电梯直达huafen799504432新学乍练发表于 2020-12-18 14:24:39来自:HUAWEI Mate 30 5G最新回复 2020-12-19 09:36:25Screenshot_20201218_142336_com.huawei.allianceapp.jpg (149.85 KB, 下载次数: 1)2020-12-18 14:24 上传孤乃江东九牧渐入佳境发表于 202...

weixin_39884144的博客 488

鸿蒙战略看点,鸿蒙OS四大看点详解!华为的野心不止手机,而是“一统江湖”...

华为开发者大会于今日在东莞松山湖召开,会上,华为消费者业务正式推出了其全新的基于微内核的面向全场景的分布式操作系统--鸿蒙OS。华为消费者业务CEO余承东在主体演讲上表示,在过去的传统模式下,每一类新形态终端的出现,都会伴随新的操作系统的诞生。“无论是在PC时代,还是移动互联时代,还是5G即将催生的物联时代,不同的时代催生不同的操作系统。”因此,面对即将到来全场景智慧时代,“也应该有相对应的操作系...

weixin_32394015的博客 223

鸿蒙战略看点,鸿蒙OS四大看点详解!华为的雄心不止手机,而是“一统江湖”...

华为开发者大会于今日在东莞松山湖召开,会上,华为消费者业务正式推出了其全新的基于微内核的面向全场景的分布式操作系统——鸿蒙OS。今天的华为开发者大会重点说了啥?点击视频↑↑↑华为消费者承东在主体业务CEO余演讲上表示,在过去的传统模式下,每一类新形态终端的出现,都会伴随新的操作系统的诞生。“无论是在PC时代,还是移动互联时代,还是5G即将催生的物联时代,不同的时代催生不同的操作系统。”因此,面对...

weixin_36204992的博客 209

Ability 到 Stage:HarmonyOS 应用架构到底在‘舞’什么?

朋友,你有没有过这种体验:明明代码逻辑写得没毛病,但应用一运行就卡顿、闪退、黑屏,一通调试下来,一头问号——“到底是哪个环节出了锅?在移动开发的江湖中,生命周期管理、界面构建、模块解耦永远是三座大山。Ability + Stage Model 架构。乍一听,是不是一脸懵?Stage 是啥?Ability 和 Activity 有什么区别?Declarative UI 又跟 Jetpack Compose 有没有一腿?别慌,别慌,今天我这篇文章就是来解锁这些关键概念的,一边码代码,一边给你讲人话,

小白酷爱学编程,欢迎大家一块儿学习~~ 1072
上一篇: 鸿蒙编程江湖:HarmonyOS 和 ArkTS 基本概念
下一篇: 鸿蒙编程江湖:异步编程的优势及 Promise的应用
SameX-4869
博客等级 码龄17年 3354粉丝 657原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值