精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

    瀏覽量

    1108
  • 函數式編程
    +關注

    關注

    0

    文章

    11

    瀏覽量

    2061
  • OpenHarmony
    +關注

    關注

    25

    文章

    3663

    瀏覽量

    16159
收藏 人收藏

    評論

    相關推薦

    OpenHarmony城市技術論壇11——香港站圓滿舉辦

    操作系統內核、編程語言、圖形處理等創新技術展開討論,并探索如何吸引全球范圍的硬件制造商、應用開發商和開發者共同打造一個多元化的國際化生態系統。 嘉賓合照 本次技術論壇由OpenHarm
    的頭像 發表于 11-18 11:39 ?228次閱讀
    OpenHarmony城市技術論壇<b class='flag-5'>第</b>11<b class='flag-5'>期</b>——香港站圓滿舉辦

    MCU編程語言開發環境介紹

    MCU編程語言 MCU編程語言是用于編寫MCU程序的高級編程語言,它們使得開發者能夠更高效地開發
    的頭像 發表于 11-01 11:51 ?502次閱讀

    2024 RISC-V 中國峰會:華秋電子助力RISC-V生態!

    百家業界領先企業及頂尖研究機構的專家學者,吸引了約3000名開發者、學者及行業精英親臨現場。在峰會前后,還策劃了超過20場豐富多彩的同期活動,為全球開發者提供了一個深入交流、碰撞思想、共謀RISC-V
    發表于 08-26 16:46

    鴻蒙原生應用元服務開發-初識倉頡開發語言

    強大的類型推斷能力,可以減少類型標注工作,提高開發效率。 內存安全 :倉頡編程語言支持自動內存管理,并在運行時進行數組下標越界檢查、溢出檢查等,確保運行時內存安全。 高效并發 :倉頡編程語言
    發表于 08-15 10:00

    鴻蒙原生應用元服務開發-初識倉頡開發語言

    強大的類型推斷能力,可以減少類型標注工作,提高開發效率。 內存安全 :倉頡編程語言支持自動內存管理,并在運行時進行數組下標越界檢查、溢出檢查等,確保運行時內存安全。 高效并發 :倉頡編程語言
    發表于 07-30 17:49

    第二屆大會回顧22 軟件缺陷漏洞分析

    演講嘉賓 | 梁洪亮 回顧整理 | 廖? ?濤 排版校對 | 宋夕明 嘉賓介紹 OS安全分論壇? 梁洪亮, 博士,北京郵電大學副教授,博士生導師。研究興趣為可信軟件與智能系統。 視頻回顧 ? 打開嗶
    的頭像 發表于 06-27 08:42 ?293次閱讀
    第二屆大會<b class='flag-5'>回顧</b><b class='flag-5'>第</b>22<b class='flag-5'>期</b>  軟件缺陷漏洞分析

    恩智浦舉辦汽車生態技術峰會并發布全新S32 CoreRide開放平臺

    恩智浦半導體于杭州舉辦為期兩日的恩智浦汽車生態技術峰會并發布全新S32 CoreRide開放平臺。
    的頭像 發表于 05-31 09:23 ?3151次閱讀
    恩智浦舉辦汽車生態技術<b class='flag-5'>峰會</b>,<b class='flag-5'>并發</b>布全新S32 CoreRide開放平臺

    【大語言模型:原理與工程實踐】探索《大語言模型原理與工程實踐》2.0

    《大語言模型“原理與工程實踐”》是關于大語言模型內在機理和應用實踐的一次深入探索。作者不僅深入討論了理論,還提供了豐富的實踐案例,幫助讀者理解如何將理論知識應用于解決實際問題。書中的案例分析有助于
    發表于 05-07 10:30

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

    并發模型是用來實現不同應用場景中并發任務的編程模型,常見的并發模型分為基于內存共享的并發模型和基于消息通信的并發模型。 Actor
    發表于 03-28 14:35

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

    并發模型是用來實現不同應用場景中并發任務的編程模型,常見的并發模型分為基于內存共享的并發模型和基于消息通信的并發模型。 Actor
    發表于 03-22 15:40

    鴻蒙原生應用開發-ArkTS語言基礎類庫多線程@Concurrent裝飾器校驗并發函數

    在使用TaskPool時,執行的并發函數需要使用該裝飾器修飾,否則無法通過相關校驗。從API version 9開始,該裝飾器支持在ArkTS卡片中使用。 裝飾器說明 裝飾器使用示例 import
    發表于 03-18 10:30

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

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

    第二屆大會回顧10 | 低時延分布式共享設備研究與探索

    演講嘉賓 | 杜? ?東 回顧整理 | 廖? ?濤 排版校對 | 李萍萍 ? 嘉賓介紹 ?OS內核及視窗分論壇? 杜東 ,上海交通大學助理研究員,OpenHarmony項目群技術指導委員會并發與協同
    的頭像 發表于 02-25 17:52 ?524次閱讀
    第二屆大會<b class='flag-5'>回顧</b><b class='flag-5'>第</b>10<b class='flag-5'>期</b> | 低時延分布式共享設備研究與<b class='flag-5'>探索</b>

    你用過哪些編程語言開發單片機?

    C語言是最常用的一種用于單片機的開發語言,也是一種高級編程語言,具有較好的可移植性和可讀性。對于單片機,通常使用嵌入式C來進行
    發表于 12-04 10:18 ?1287次閱讀

    羅姆(ROHM)4代:技術回顧

    羅姆(ROHM)4代:技術回顧
    的頭像 發表于 11-28 17:02 ?693次閱讀
    羅姆(ROHM)<b class='flag-5'>第</b>4代:技術<b class='flag-5'>回顧</b>