关于openharmony:移动应用高级语言开发并发探索

5次阅读

共计 3826 个字符,预计需要花费 10 分钟才能阅读完成。

本文转载自 OpenHarmony TSC 官网微信公众号《峰会回顾第 9 期 | 挪动利用高级语言开发——并发摸索》

演讲嘉宾 | 李勇彪
回顾整顿 | 廖   涛
排版校对 | 李萍萍

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

内容起源
第一届凋谢原子开源基金会 OpenHarmony 技术峰会——编程语言及利用框架分论坛

视频回顾
视频链接:
https://www.bilibili.com/video/BV1Co4y1c7iC/?spm_id_from=333….

正 文 内 容
随着摩尔定律放缓景象的日益突出以及计算机多核零碎架构的呈现,并发编程继续引起了宽泛的关注。目前,挪动应用领域的并发摸索有哪些,在 OpenHarmony 上又有哪些成绩和将来布局呢?华为终端编译器与运行时架构师李勇彪在第一届 OpenHarmony 技术峰会上给大家带来了几点分享。

01►并发的背景

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

摩尔定律放缓景象

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

并发与并行

02►常见的并发模型
2.1►►线程和锁

线程和锁是并发模型的一种常见示意,下图示意了一种典型的 CPU 多核架构,能够看出,L3 Cache 在多核间共享,因而 L3 Cache 的一致性是保障程序在多核间失常运行的根底。在确保单线程执行后果不变的前提下,能够做任意编译器优化,如常量流传、公共子表达式打消、内联、标量替换、死代码删除、指令乱序等。因为不同的操作系统对内存一致性有不同的束缚,须要通应用锁等同步语义保障多线程内存一致性。目前,通过基于共享内存的乐观锁、自旋锁、偏差锁、精准内存屏障等伎俩能够实现性能优良的多线程程序,但也存在肯定的问题:线程和锁计划的优化依赖软件工程有良好的并发实际标准和资深并发程序开发者,且容易引发死锁,测试及保护的老本也很高。

一种 CPU 多核架构

2.2►►Actor 模型
Actor 模型概念的提出曾经几十年了:一个 actor 是一个根本的计算单元,通过音讯通信;外部维持可变状态,两边相互不能间接批改。其劣势在于每个 Actor 易于保护以及测试,业务开发只须要关怀业务的音讯解决,测试只须要笼罩音讯流程序即可。此外,其容错性也好,适宜分布式编程。当然,Actor 模型也存在肯定的短板:存在信箱堆满问题,不共享状态,只通过音讯通信交互,不适宜细粒度并行。

Actor 模型

2.3►►函数式编程
函数式编程有以下特点:函数是一等公民;无副作用(无共享可变状态);纯函数构建所有。在函数式编程下,只有输出肯定,其输入也肯定合乎预期。真实世界的函数式则更依赖参数化,会将函数副作用(Side Effect)上抛,尽量脱离开发者编写的业务逻辑层,在框架外部进行解决,且有构造依赖。该模式具备确定性、健壮性(易保护易测试)以及人造反对并行化等劣势,但开发效率较低,理论的业务逻辑很难间接转成函数式开发,且在局部场景下性能体现较差。

函数式编程

2.4►►并发模型特点
常见的并发模型次要分为两类,一类仅基于共享内存,另一类则基于音讯通信。基于共享内存的并发模型(线程与锁),具备适用范围广、靠近硬件工作形式的实质和正确应用时效率很高的劣势,但不可避免地存在测试及保护艰难等问题,目前该模式曾经逐步被利用开发畛域摒弃;基于音讯通信的并发模型(Actor、函数式编程),具备容错性好、特定场景性能体现很好且易于保护和测试的劣势,但也存在利用场景无限、不适宜细粒度并行等短板。

03►挪动利用框架并发
3.1►►Dart 语言

Dart 是一门新的编程语言,如同 JAVA、PHP 一样,是为了解决编写应用程序中的一些理论问题而被 Google 创造的,其晚期次要是为了可能在 Web 畛域替换 JavaScript(后文简称 JS),起初 Google 外部用 Dart 编写孵化了一个挪动开发框架 Sky,之后又被命名为 Flutter,在挪动跨平台开发畛域大放异彩。Dart 的并发指标次要为了赋能框架反对工作并行化,解决开发者的并发工作和多线程开发需要。其仅共享不可变对象,而可变对象不共享,且提供了单线程并发(异步)和多线程并发(Isolate Spawn /Compute)的并发 API。

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。该性能反对不可变对象共享,对基础架构进行了轻量化解决,大幅晋升了启动工夫,且优化了启动内存。

ArkCompiler 并发实例运行

OpenHarmony 也提供了 TaskPool。TaskPool 是一个更易用的并发工作 API,可能使开发者易于开发并发工作,缩小代码编写量,让其无需关怀并发实例的生命周期和场景下并发工作的负载轻重。此外,TaskPool 还可能对立工作负载的资源管理,升高了零碎的资源耗费,晋升了零碎的整体性能。在如图所示的 TaskPool 架构中,通过 Task Dispatch Manager 实现优先级调度、负载平衡以及零碎的对立治理等性能,通过 Task Worker Threads 实现自适应性和可伸缩性。

TaskPool 对立工作池设计架构

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

05►总结
在 OpenHarmony 并发模型上,后续将对并发实例进一步轻量化,摸索共享对象的无锁并发。此外,在 OpenHarmony 并发调度上,也将针对现存的零碎中线程泛滥问题,从工夫和空间两个维度设计相干计划进行优化和改良,并将开发一套对立的并行框架,在运行时依据工作依赖状态和可执行资源主动并发调度和执行工作。

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

点击关注理解更多 OpenHarmony TSC 技术干货内容

正文完
 0