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

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

3天内不再提示

峰会回顾第9期 | 移动应用高级语言开发——并发探索

OpenHarmony TSC 来源:OpenHarmony TSC 作者:OpenHarmony TSC 2023-05-11 10:17 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

演讲嘉宾 | 李勇彪

回顾整理 | 廖 涛

排版校对 | 李萍萍

062b541c-efa2-11ed-878e-dac502259ad0.png

嘉宾简介

李勇彪,OpenHarmony项目群技术指导委员会编程语言TSG成员,华为OpenHarmony虚拟机编译器专家。2021年至今,华为终端OS语言编译运行时团队架构师,负责OpenHarmony高级语言编译运行时的整体技术架构。曾就职于阿里巴巴,参与并主导AliOS高级语言虚拟机的编译优化、内存管理优化、多线程优化等项目。目前聚焦在移动OS的编程语言及语言虚拟机领域。

内容来源

第一届开放原子开源基金会OpenHarmony技术峰会——编程语言及应用框架分论坛

正 文 内 容

随着摩尔定律放缓现象的日益突出以及计算机多核系统架构的出现,并发编程持续引起了广泛的关注。目前,移动应用领域的并发探索有哪些,在OpenHarmony上又有哪些成果和未来规划呢?华为终端编译器与运行时架构师李勇彪在第一届OpenHarmony技术峰会上给大家带来了几点分享。

0646b702-efa2-11ed-878e-dac502259ad0.png

01

并发的背景

摩尔定律由Intel的联合创始人兼前CEO戈登·摩尔提出,即半导体芯片上集成的晶体管电阻数量将每两年增加一倍,微处理器的性能提高一倍,或价格下降一半。在过去的几十年间,摩尔定律为算力乃至生产力的发展作出了巨大的贡献,但至2022年,随着Denard微缩效应遇到了元件物理的瓶颈,业界逐渐对这一观点产生了强烈的分歧,一部分人士认为摩尔定律正在逐步放缓甚至有失效的倾向,另一部分人士认为摩尔定律仍然有效,仅是成本增加了。在该背景下,单芯片功耗约束了单核的性能,基于多核化的并发编程成为移动领域提升性能的重要技术手段。

069578ec-efa2-11ed-878e-dac502259ad0.png

摩尔定律放缓现象

那么,什么是并发呢?并发指同一时间应对多项任务的能力,一个时间段中有几个任务都处于运行准备就绪状态,在单核设备中,任一个时刻只有一个任务能够运行,其运行顺序是不固定的;而在多核场景中,同一时间可以多项任务并行。

06ce1ec2-efa2-11ed-878e-dac502259ad0.png

并发与并行

02

常见的并发模型

2.1►►

线程和锁

线程和锁是并发模型的一种常见表示,下图示意了一种典型的CPU多核架构,可以看出,L3 Cache在多核间共享,因此L3 Cache的一致性是保证程序在多核间正常运行的基础。在确保单线程执行结果不变的前提下,可以做任意编译器优化,如常量传播、公共子表达式消除、内联、标量替换、死代码删除、指令乱序等。由于不同的操作系统对内存一致性有不同的约束,需要通使用锁等同步语义保证多线程内存一致性。目前,通过基于共享内存的乐观锁、自旋锁、偏向锁、精准内存屏障等手段可以实现性能优秀的多线程程序,但也存在一定的问题:线程和锁方案的优化依赖软件工程有良好的并发实践规范和资深并发程序开发者,且容易引发死锁,测试及维护的成本也很高。

06df7546-efa2-11ed-878e-dac502259ad0.png

一种 CPU 多核架构

2.2►►

Actor 模型

Actor模型概念的提出已经几十年了:一个actor是一个基本的计算单元,通过消息通信;内部维持可变状态,两边互相不能直接修改。其优势在于每个Actor易于维护以及测试,业务开发只需要关心业务的消息处理,测试只需要覆盖消息流顺序即可。此外,其容错性也好,适合分布式编程。当然,Actor模型也存在一定的短板:存在信箱堆满问题,不共享状态,只通过消息通信交互,不适合细粒度并行。

06edc4d4-efa2-11ed-878e-dac502259ad0.png

Actor 模型

2.3►►

函数式编程

函数式编程有以下特点:函数是一等公民;无副作用(无共享可变状态);纯函数构建一切。在函数式编程下,只要输入一定,其输出也一定符合预期。真实世界的函数式则更依赖参数化,会将函数副作用(Side Effect)上抛,尽量脱离开发者编写的业务逻辑层,在框架内部进行处理,且有结构依赖。该模式具有确定性、健壮性(易维护易测试)以及天然支持并行化等优势,但开发效率较低,实际的业务逻辑很难直接转成函数式开发,且在部分场景下性能表现较差。

07012196-efa2-11ed-878e-dac502259ad0.png

函数式编程

2.4►►

并发模型特点

常见的并发模型主要分为两类,一类仅基于共享内存,另一类则基于消息通信。基于共享内存的并发模型(线程与锁),具有适用范围广、接近硬件工作方式的本质和正确使用时效率很高的优势,但不可避免地存在测试及维护困难等问题,目前该模式已经逐渐被应用开发领域摒弃;基于消息通信的并发模型(Actor、函数式编程),具有容错性好、特定场景性能表现很好且易于维护和测试的优势,但也存在应用场景有限、不适合细粒度并行等短板。

03

移动应用框架并发

3.1►►

Dart 语言

Dart是一门新的编程语言,如同JAVA、PHP一样,是为了解决编写应用程序中的一些实际问题而被Google发明的,其早期主要是为了能够在Web领域替换JavaScript(后文简称JS),后来Google内部用Dart编写孵化了一个移动开发框架Sky,之后又被命名为Flutter,在移动跨平台开发领域大放异彩。Dart的并发目标主要为了赋能框架支持任务并行化,解决开发者的并发任务和多线程开发需求。其仅共享不可变对象,而可变对象不共享,且提供了单线程并发(异步)和多线程并发(Isolate Spawn /Compute)的并发API

0717461a-efa2-11ed-878e-dac502259ad0.png

Dart 并发架构

3.2►►

Swift

Swift是苹果公司于2014年WWDC苹果开发者大会发布的新开发语言,可与Objective-C共同运行于macOS和iOS平台,用于搭建基于苹果平台的应用程序。在2022年的Swift 5.5版本中,发布了并发API的说明,其并发目标主要为了减少应用开发者从想法到实现必须花费的时间,使体验远远优于现有方案(队列不可知、可维护性差且安全性低)。Swift的并发理念是,共享可变状态不利于开发者,也不利于硬件,且无法突破单进程。因此,Swift希望能够提供无损化的易用的API,在设计、可维护性、安全性、可伸缩性以及性能等方面持续改进。目前,Swift已提供的API有async/await、Task & TaskGroup、Actor等。

3.3►►

流行移动操作系统并发模型趋势

在移动应用开发领域中,迭代和更新频繁,开发效率是一个关键因素,而锁对于应用开发者过于底层,很难用好,难以调试,属于高级用法。出于提供易用、简单、高效的并发模型考虑,业界目前给应用开发者提供的多线程模型,有避免数据竞争、实现无锁化的趋势。例如,在Web上,JS在多线程使用的是消息通信机制(内存隔离,增加可转移Builtin对象支持);在Flutter上,Dart在多线程使用的是消息通信机制 (内存隔离);在Android上,Kotlin原生先后提出过Worker API、不可变共享、对象转移冻结等方案替换共享多线程方案(用户不使用锁);在IOS上,Swift 5.5实现了结构化编程和Actor,Swift整体并发的演进思路是默认安全的编程模型。

04

OpenHarmony高级语言的并发探索

在JS世界的并发中,如前文所提到的JS并发架构—Actor模型,具有无锁、容易维护和测试、容错性好以及分布式编程等优势,但启动较慢,并发的实例开销大。对于JS并发API—Worker来说,由于其每一个并发实例之间不共享,开发者需要封装和解析消息命令,关心Worker实例的生命周期,在高负载和低负载时也需要精确调节Worker数量。

基于上述问题,OpenHarmony上实现了轻量化并发实例——Lite Actor。该功能支持不可变对象共享,对基础架构进行了轻量化处理,大幅提升了启动时间,且优化了启动内存。

07243bfe-efa2-11ed-878e-dac502259ad0.png

ArkCompiler并发实例运行

OpenHarmony也提供了TaskPool。TaskPool是一个更易用的并发任务API,能够使开发者易于开发并发任务,减少代码编写量,让其无需关心并发实例的生命周期和场景下并发任务的负载轻重。此外,TaskPool还能够统一任务负载的资源管理,降低了系统的资源消耗,提升了系统的整体性能。在如图所示的TaskPool架构中,通过Task Dispatch Manager实现优先级调度、负载均衡以及系统的统一管理等功能,通过Task Worker Threads实现自适应性和可伸缩性。

073c18aa-efa2-11ed-878e-dac502259ad0.png

TaskPool统一任务池设计架构

在高级语言并发的发展中,业界更倾向于给开发者提供更易用、更好用以及更高效的并发API。OpenHarmony提供的并发API目前介于Dart和Swift之间,汲取两者的长处,并对其现存问题进行持续的优化和改进。此外,OpenHarmony正在考虑引入准静态对象,实现真正共享。

05

总结

在OpenHarmony并发模型上,后续将对并发实例进一步轻量化,探索共享对象的无锁并发。此外,在OpenHarmony并发调度上,也将针对现存的系统中线程泛滥问题,从时间和空间两个维度设计相关方案进行优化和改进,并将开发一套统一的并行框架,在运行时根据任务依赖状态和可执行资源自动并发调度和执行任务。

欢迎大家持续关注OpenHarmony并发研究工作,也期待与社区的开发者们共建OpenHarmony的并发能力。

E N D

审核编辑黄宇


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

    关注

    0

    文章

    6

    浏览量

    1190
  • 函数式编程
    +关注

    关注

    0

    文章

    11

    浏览量

    2186
  • OpenHarmony
    +关注

    关注

    31

    文章

    3926

    浏览量

    20715
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    华为陈实出席AfricaCom 2025并发表主题演讲

    在AfricaCom 2025展会期间,华为无线网络产品线营销副总裁陈实出席以“推动智能连接,实现商业成功”为主题的MBB峰会并发表“创新开启非洲移动产业黄金十年”主题演讲,以“新流量、新体验、新商业、新联接、新节能”五大场景
    的头像 发表于 11-12 11:26 612次阅读

    AM62x开发板的常见接口问题及排查思路(2

    。《开发效率翻倍!AM62x开发板的常见接口问题及排查思路(1)》本篇文章将继续针对开发过程中可能遇到的各类接口问题,为大家提供系统化的
    的头像 发表于 11-07 08:06 4954次阅读
    AM62x<b class='flag-5'>开发</b>板的常见接口问题及排查思路(<b class='flag-5'>第</b>2<b class='flag-5'>期</b>)

    达实智能34智慧空间学习研讨会圆满举办

    2025年9月18日,由达实智能主办的34“共创可体验的智慧空间”学习研讨会于深圳总部达实大厦圆满举办,来自安居集团、晨光乳业、华润、金蝶、京东健康、南方电网、南山医院、欧华国际、TCL、西门子医疗、中广核、中海地产、中集集
    的头像 发表于 09-22 16:02 648次阅读

    奕斯伟计算亮相2025全球AI芯片峰会

    9月17日,2025全球AI芯片峰会(GACS2025)在上海举行。此次峰会以“AI大基建智 智芯新世界”为主题,聚焦AI大时代的新基建热潮,解码大模型下半场中国芯的竞速与突围。当前AI技术迅猛发展
    的头像 发表于 09-17 18:10 1458次阅读
    奕斯伟计算亮相2025全球AI芯片<b class='flag-5'>峰会</b>

    云天励飞亮相2025全球AI芯片峰会

    9 月 17 日,全球 AI 芯片峰会在上海举行,云天励飞董事长兼 CEO 陈宁出席并发表演讲。
    的头像 发表于 09-17 17:56 1089次阅读

    【HZ-T536开发板免费体验】2 - 交叉编译仓颉编程语言程序到开发板运行

    感谢电子发烧友和合众恒跃提供的试用机会。 引言 上一篇介绍了开箱的结果,接下来测试一下华为仓颉编程语言开发板上运行的效果。最近对华为仓颉编程语言非常感兴趣,所以此次测试重点也是看看仓颉编程
    发表于 07-16 21:27

    华为MWCSH 2025移动AI基础网峰会成功举办

    在2025 MWC上海期间,华为举办“移动AI基础网峰会”,邀请全球运营商、AI生态伙伴、产业标准组织、学者及三方测评机构等产学研代表,共同探讨移动AI产业的未来发展路径。会议达成两项共识:一是增强上行体验是
    的头像 发表于 07-01 15:49 644次阅读

    第三届大会回顾3 | FFRT并发框架在OpenHarmony中的设计与实践

    演讲嘉宾 | 黄佑钟 回顾整理 | 廖   涛 排版校对 | 宋夕明 嘉宾介绍 开发框架分论坛  黄佑钟 ,海思Kirin解决方案并行与异构计算专家。 正文内容 多任务并发能更有效地利用CPU资源
    的头像 发表于 06-21 16:53 959次阅读
    第三届大会<b class='flag-5'>回顾</b><b class='flag-5'>第</b>3<b class='flag-5'>期</b> | FFRT<b class='flag-5'>并发</b>框架在OpenHarmony中的设计与实践

    什么是ArkTS?

    ArkTS简介 ArkTS是OpenHarmony优选的应用高级开发语言。ArkTS提供了声明式UI范式、状态管理支持等相应的能力,让开发者可以以更简洁、更自然的方式
    发表于 06-17 06:24

    鸿蒙5开发宝藏案例分享---应用并发设计

    到性能调优,这些案例都是华为工程师的血泪经验结晶。下面用最直白的语言+代码示例,带你玩转HarmonyOS并发开发! ?一、ArkTS并发模型:颠覆传统的设计 传统模型痛点 graph
    发表于 06-12 16:19

    【社区之星】赵云:不要浮躁,沉着稳定,才能做好技术

    、【免费】四层板进阶—PCBLAYOUT设计实战视频课 5、60天学会步进电机驱动训练营 往社区之星回顾81:【社区之星】张飞:做技术值不值钱,核心竞争力在于精
    发表于 04-14 16:42

    华为李捷亮相MWC 2025并发表主题演讲

    在MWC25间,GSMA成功举办了主题为“FWA:5G成功故事,它能走多远?”的FWA专题峰会。此次峰会吸引了全球领先的运营商、网络设备供应商以及分析师机构齐聚一堂,共同分享FWA的发展历程与未来前景,
    的头像 发表于 03-11 09:45 813次阅读

    华为在MWC 2025举办移动AI产业峰会

    在MWC25 巴塞罗那期间,华为成功举办“移动AI产业”峰会,来自全球的运营商客户,以及Ookla、Omdia、ABI、质谱AI和闪极科技等产业伙伴齐聚一堂,共同探讨移动AI产业的升级与网络建设成
    的头像 发表于 03-06 11:02 806次阅读

    华为在MWC 2025举办行业数智化转型峰会

    MWC巴塞罗那2025间,华为举办行业数智化转型峰会
    的头像 发表于 03-05 10:06 1073次阅读

    RK3568驱动指南|第三篇-并发与竞争-19章 并发与竞争实验

    RK3568驱动指南|第三篇-并发与竞争-19章 并发与竞争实验
    的头像 发表于 02-24 16:26 845次阅读
    RK3568驱动指南|第三篇-<b class='flag-5'>并发</b>与竞争-<b class='flag-5'>第</b>19章 <b class='flag-5'>并发</b>与竞争实验