精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

單線程開發(fā)異步任務?ACE JS框架是如何實現(xiàn)的

開發(fā) 開發(fā)工具
HarmonyOS ACE開發(fā)框架遵循EventLoop調度機制,并且提供了更多的機制和API,讓業(yè)務邏輯可以在外部線程執(zhí)行,通過消息通信機制讓JS語言有了異步的屬性。

做應用開發(fā)時,開發(fā)語言的選擇至關重要。例如Java語言的線程特性能夠讓多任務并行,從而充分利用硬件資源開發(fā)出高性能的應用。而HarmonyOS 2提供的應用開發(fā)語言中,不僅有多線程的Java語言,還有單線程的JS語言。

那JS語言該如何充分利用硬件資源開發(fā)出高性能的應用呢?為此,HarmonyOS提出了“ACE JS的單線程異步機制”來解決這一問題。

雖然,JS語言本身是無法實現(xiàn)異步功能,但是ACE JS框架提供了多線程的宿主環(huán)境,通過消息通信機制讓JS語言有了異步的屬性,接下來我們來了解下具體的實現(xiàn)原理。

ACE開發(fā)框架

使用JS開發(fā)HarmonyOS應用,使用的開發(fā)框架名為ACE(Ability Cross-Platform Environment),該框架適用于手機、平板、智慧屏、智慧表、車機等設備,具備“一次開發(fā),多端部署”的能力。

ACE框架包括應用層(Application)、前端框架層(Framework)、引擎層(Engine)和平臺適配層(Porting Layer),如下圖所示:

  • Application:應用層表示開發(fā)者使用JS UI框架開發(fā)的FA應用,這里的FA應用特指JS FA應用;
  • Framework:前端框架層主要完成前端頁面解析,以及提供MVVM(Model-View-ViewModel)開發(fā)模式、頁面路由機制和自定義組件等能力;
  • Engine:引擎層主要提供動畫解析、DOM(Document Object Model)樹構建、布局計算、渲染命令構建與繪制、事件管理等能力;
  • Porting Layer:適配層主要完成對平臺層進行抽象,提供抽象接口,可以對接到系統(tǒng)平臺。比如:事件對接、渲染管線對接和系統(tǒng)生命周期對接等。

ACE開發(fā)框架的線程模型

每個HarmonyOS JS應用,都是通過上圖所示的ACE開發(fā)框架進行加載渲染的。ACE開發(fā)框架包含了JS線程、UI線程、GPU線程、IO線程,并且在ACE框架外還會存在一類后臺任務線程。其中GPU線程與IO線程為ACE框架內部的專有線程,主要作用于ACE框架初始化與頁面加載渲染的過程;UI線程、JS線程和后臺任務線程會與應用開發(fā)代碼相關:

  • UI線程:負責應用界面的繪制刷新,與應用的進程號相同,又叫主線程。如果開發(fā)JS+JAVA的混合編程,JAVA PA(Particle Ability)的onStart/onConnect等Ability生命周期回調便是運行在主線程,若在這些生命周期回調上執(zhí)行耗時操作則會導致JS UI的繪制刷新卡住。
  • JS線程:應用的JS代碼會被JS引擎解析執(zhí)行,并運行在JS線程上,而JS又是單線程語言,所以目前我們工程中看到的所有的JS代碼都會執(zhí)行在這個進程下唯一的JS線程上。
  • 后臺任務線程:這里是對ACE框架外部的后臺線程的一個統(tǒng)稱,并不單指一個線程,也并不唯一。后臺任務線程包含了Java PA線程、文件操作API、網絡訪問API內部實現(xiàn)等相關線程。

下面我們結合測試代碼,分析這三個線程的作用和關系。

JS線程與UI線程的關系

為了驗證JS線程與UI線程的關系,我們準備了一個實驗性質的Demo,主要代碼以及運行過程的Log如下:

首先我們在IDE建立一個Empty Ablity(JS)模板的HelloWorld工程,在生命周期、按鈕響應回調方法里增加Log以觀察線程情況。剛創(chuàng)建的app.js中Application生命周期默認已經有Log,無需額外添加。

我們只需要在主界面index.js文件中onInit增加日志:

  1. console.info('page.default onInit'); 


然后在index.hml中增加一個button以及會一直進行動畫的progress組件:

  1. <button id='button1' onclick="onButtonClick">I'm a button</button> 
  2. <progress type="circular"/> 


最后在index.js中增加按鈕點擊響應事件以及Log,并且嘗試sleep阻塞js線程:

  1. function sleep(delay) { 
  2. for (var t = Date.now(); Date.now() - t <= delay; ); 
  3. onButtonClick() { 
  4. console.info('onButtonClick begin'); 
  5. sleep(1000); 
  6. console.info('onButtonClick end'); 


將應用運行起來,點擊兩次按鈕,得到如下Log:

從輸出的Log中,我們可以看到這個JS FA進程號為22592,也就是說UI線程是22592;生命周期回調以及按鈕響應均在24077線程,這個就是JS線程,所以JS線程與UI線程不是同一個線程。

并且我們嘗試通過sleep方法阻塞JS線程,想觀察JS線程阻塞是否會影響到UI線程的刷新。最終得出的結論是無論JS線程sleep多長時間,UI界面上的progress組件動畫一直會不斷刷新,按鈕也會有按壓效果變化,所以我們可以推測JS線程與UI線程的相互調用應該是通過某種消息機制完成的,而不是阻塞式的調用。

JS線程與后臺任務線程的關系

ACE JS框架提供了JS FA(Feature Ability)調用Java PA(Particle Ability)的機制,該機制提供了一種通道來傳遞方法調用、處理數(shù)據(jù)返回以及訂閱事件上報。通過以下Demo可以驗證 JS 線程與Java PA線程的關系:

在JS中,我們通過FeatureAbility.callAbility拉起并調用了名為一個類名為ServiceAbility的Java PA,并拿到返回結果:

  1. var action = {}; 
  2. action.bundleName = 'com.blancwu.test'
  3. action.abilityName = 'com.blancwu.test.ServiceAbility'
  4. action.messageCode = 1001
  5. action.abilityType = 0
  6. action.syncOption = 0
  7.  
  8. console.info('FeatureAbility.callAbility begin' + JSON.stringify(action));FeatureAbility.callAbility(action).then(function (value) { 
  9. console.info('FeatureAbility.callAbility async result ' + JSON.stringify(value)); 
  10. }) 
  11. console.info('FeatureAbility.callAbility end' + JSON.stringify(action)); 

在ServiceAbility的onRemoteRequest中增加Log輸出,并sleep 1秒鐘,以便觀察線程情況與之間關系:

  1. @Override 
  2. public boolean onRemoteRequest(int code, MessageParcel data, MessageParcel reply, MessageOption option) throws RemoteException { 
  3. HiLog.info(LABEL_LOG, "onRemoteRequest begin " + code); 
  4. if (code == 1001) { 
  5. try { 
  6. Thread.sleep(1000); 
  7. } catch (InterruptedException e) { 
  8. e.printStackTrace(); 
  9. Map<String, Object> result = new HashMap<String, Object>(); 
  10. result.put("result", 1); 
  11. reply.writeString(ZSONObject.toZSONString(result)); 
  12. HiLog.info(LABEL_LOG, "onRemoteRequest end " + code); 
  13. return super.onRemoteRequest(code, data, reply, option); 


完成以上代碼后,并進行執(zhí)行,可得到的Log如下:

我們觀察到本次運行主進程(UI線程)號為4133,JS代碼執(zhí)行在JS線程5887,Java PA響應onRemoteRequest執(zhí)行在另一個后臺任務線程5837。通過Log我們看到onRemoteRequst即使阻塞了后臺任務線程1s也不會影響JS線程的并行執(zhí)行以及主線程(UI線程)上動畫的刷新,做到了JS線程與后臺任務線程異步地執(zhí)行事務。

JS線程的異步機制

上面從代碼實驗角度觀察到了JS線程與其他線程的異步關系,那么JS線程處理來自其他多個線程的調用是怎么實現(xiàn)的呢?
首先,我們來看一下傳統(tǒng)瀏覽器環(huán)境下的運行機制:

上圖中,JS線程中的函數(shù)調用會存在于棧(stack)中,棧中的函數(shù)可以調用瀏覽器環(huán)境提供的WebAPIs,包含了DOM、ajax、timeout等API,這些API會在瀏覽器環(huán)境提供的另外一個外部線程執(zhí)行,執(zhí)行完成后會在任務隊列(callback queue)中加入對應的回調事件(如onClick、onLoad、onDone)。

當棧中的代碼執(zhí)行完畢,即棧清空后,JS線程又會通過event loop取出任務隊列中的下一個任務進行執(zhí)行,以此類推完成整個程序執(zhí)行。

HarmonyOS ACE開發(fā)框架同樣遵循上述最基本的EventLoop調度機制,并且提供了更多的機制和API,讓業(yè)務邏輯可以在外部線程執(zhí)行,包含了上面提到的Java PA以及異步回調的系統(tǒng)能力API。其中,異步回調的系統(tǒng)能力API包含如文件系統(tǒng)操作和網絡操作等,具體大家可以按照我們實驗Demo的方法去嘗試一下。
● 參考 https://developer.harmonyos.com/cn/docs/documentation/doc-references/js-apis-file-storage-0000000000629445

未來發(fā)展的展望

目前ACE JS應用內實現(xiàn)多線程的最佳方式是通過混合編程調用Java PA方式,未來,隨著純JS應用越來越多,只支持單線程的JS ACE框架的異步API并不能解決各種復雜場景問題。

單線程的JS加上異步API能夠很好解決單個I/O阻塞的問題,但是如果遇到大量的I/O事件,比如批刪除大量文件,通過for循環(huán)發(fā)起了大量異步任務,也會降低執(zhí)行效率,甚至阻塞其他異步任務的執(zhí)行。并且如果要使用JS語言開發(fā)計算密集型的任務,也無法在唯一的JS線程上進行。

這時就需要一個真正的JS多線程處理機制了,雖然目前HarmonyOS 2還未支持,但未來HarmonyOS會考慮規(guī)劃出與HTML5類似提供支持WebWorker機制,支持開發(fā)出多線程的JS代碼,提供給應用開發(fā)者更多的發(fā)揮空間。

 

責任編輯:黃顯東 來源: 51CTO
相關推薦

2025-04-24 08:15:00

Redis單線程線程

2025-06-17 00:22:00

2009-07-10 09:05:20

SwingWorker

2021-01-10 11:21:33

JavaScript語言開發(fā)

2019-06-17 14:20:51

Redis數(shù)據(jù)庫Java

2021-06-11 11:28:22

多線程fork單線程

2022-06-22 08:16:29

異步非阻塞框架

2020-11-09 09:33:37

多線程

2010-08-30 08:55:56

JavaScript引

2022-01-04 11:11:32

Redis單線程Reactor

2021-08-10 07:00:01

Redis單線程并發(fā)

2022-07-07 09:12:17

JavaScript線程循環(huán)機制

2019-05-06 11:12:18

Redis高并發(fā)單線程

2022-07-18 13:59:43

Redis單線程進程

2020-10-26 08:55:52

Redis單線程模型

2010-01-28 16:45:44

Android單線程模

2024-02-26 00:00:00

JavaScript單線程高效

2017-03-06 14:08:38

JavaScript單線程setTimeout

2023-10-15 12:23:10

單線程Redis

2019-11-25 10:13:52

Redis單線程I
點贊
收藏

51CTO技術棧公眾號

国产伦精品一区二区三区四区视频_| 国产精品啊啊啊| 国产在线1区| 日本三级视频在线观看| 亚洲精品国产首次亮相| 欧美日韩性视频| 欧美怡红院视频| 国产精品视频一| 国产美女视频免费看| 国产婷婷一区二区三区久久| 国产精品一级在线观看| 97久久人人超碰| 亚洲欧美综合v| 成年人视频网站免费| 高潮毛片又色又爽免费| 天堂av中文在线| 久久精品道一区二区三区| 宅男噜噜噜66一区二区66| 欧美日本亚洲| 玖玖爱免费视频| 亚洲伦理一区二区| 国产精品麻豆欧美日韩ww| 欧美成人午夜影院| 一级黄色香蕉视频| 国产手机av在线| 久久不射2019中文字幕| 欧美大奶子在线| 91狠狠综合久久久久久| 羞羞视频在线观看不卡| 日本一区二区成人在线| 国产精品日本精品| 日本一区二区欧美| 成人在线中文| 国产日韩欧美在线一区| www.亚洲免费视频| 污视频免费在线观看网站| 国产日韩一区二区在线| 丰满女人性猛交| 黄色片中文字幕| 欧美人与动xxxxz0oz| 99精品视频在线播放观看| 91免费在线视频| 中文字幕第69页| 素人一区二区三区| 国产精品乱人伦一区二区| 含羞草久久爱69一区| 亚洲精品视频在线观看免费视频| 成人午夜大片| 亚洲精品成人少妇| 51午夜精品| 亚洲日本久久久| 久久www人成免费看片中文| 免费在线观看精品| 日韩亚洲在线观看| 少妇人妻好深好紧精品无码| 中国色在线日|韩| 久久综合九色综合欧美就去吻| 欧美中文字幕视频| 欧美狂猛xxxxx乱大交3| 台湾佬成人网| 久久免费国产精品| 91亚洲国产成人精品性色| 国产又粗又大又黄| 亚洲美女黄色| 亚洲成人久久久| 99国产精品白浆在线观看免费| 日本www在线观看| 成人激情免费网站| 18久久久久久| 东京热无码av男人的天堂| 国产欧美一区二区精品久久久| 91成人在线观看喷潮| 成人欧美一区二区三区在线湿哒哒| 可以免费看av的网址| 北条麻妃一区二区三区在线观看| 欧美大胆性生话| 久久久久国产免费免费| 国产精品女人网站| 日本一区二区三区四区五区| 亚洲日本国产| 日韩av片永久免费网站| 欧美成人精品一区二区免费看片| 亚洲国产高清在线观看| 亚洲国产三级在线| 久久久影院一区二区三区 | 人妻 日韩精品 中文字幕| 亚洲一区二区免费看| 亚洲精品国精品久久99热| 久久精品国产sm调教网站演员| 美女av在线播放| 日本一区二区三区高清不卡| 亚洲影院高清在线| 精品一区免费观看| 凹凸成人精品亚洲精品密奴| 欧美影片第一页| 国模大尺度视频| 97蜜桃久久| 国产精品国产成人国产三级| 国产精品免费视频一区二区| 国产有码在线观看| 波多野结衣精品在线| 精品伦理一区二区三区 | 亚洲日本中文字幕| 久久精品在线观看视频| 亚洲欧洲另类| 国产免费一区二区三区在线观看 | 午夜诱惑痒痒网| 日韩在线伦理| 国产精品午夜电影| 成人av在线播放观看| 中文字幕天堂网| 中文字幕 亚洲视频| 欧美91大片| 精品国产网站地址| 久久夜靖品2区| 国产在线日韩欧美| 欧美在线性爱视频| av观看在线免费| 激情图区综合网| 国产日韩精品视频| 中文无码av一区二区三区| 国产精品一区二区久久不卡| 成人高h视频在线| 日韩美女一级视频| www.日韩在线| 久久riav| 日本性爱视频在线观看| 欧美日韩色一区| 亚洲欧美自偷自拍另类| 激情久久99| 51精品国自产在线| 日韩中文字幕有码| 午夜综合激情| 欧美精品久久久久a| 久久一级免费视频| 久久综合五月| 国产免费一区二区三区在线观看 | 国产亚洲成人av| 国产综合自拍| 91精品啪在线观看麻豆免费| 邻居大乳一区二区三区| 久久久不卡网国产精品一区| 中文字幕精品在线播放| caoprom在线| 日韩欧美国产午夜精品| 欧美激情第一区| 大奶一区二区三区| 精品动漫一区二区三区在线观看| yy1111111| 国产精品嫩草影院在线看| 韩日欧美一区二区| 久久五月天综合| 大胸美女被爆操| 精品日韩毛片| 两个人的视频www国产精品| 成人午夜视频在线播放| 日韩电影一区二区三区四区| 成人av电影天堂| 黄色的视频在线免费观看| 中文字幕的久久| 婷婷激情四射五月天| 日本不卡二三区| 成人免费激情视频| 天使と恶魔の榨精在线播放| 精品国产污网站| 国产精品免费av一区二区| 91免费看片在线观看| 亚欧洲精品在线视频免费观看| 极品美乳网红视频免费在线观看| 日韩欧美国产成人| 91视频免费入口| 一区二区蜜桃| 清纯唯美亚洲激情| 免费a在线观看| 一本色道久久综合精品竹菊| 一级网站在线观看| 欧美欧美全黄| 国产三级精品网站| 在线观看a级片| 欧美亚洲动漫精品| 免费成人美女女在线观看| 久热综合在线亚洲精品| 在线免费观看成人| 成人黄色动漫| 正在播放一区二区| 亚洲少妇xxx| 成人小视频免费观看| 色姑娘综合网| 激情久久免费视频| 中文字幕日韩欧美在线视频| 国产在线精品观看| 91丨九色porny丨蝌蚪| 亚洲一区二区蜜桃| 宅男在线一区| 日韩在线观看视频免费| 亚洲国产精品无码久久久| 久久一二三国产| 日本不卡高字幕在线2019| 在线视频日韩欧美| 91精品91| 日本亚洲导航| 2021中文字幕在线| 中文字幕欧美精品在线| 免费看国产片在线观看| 中文字幕久久午夜不卡| 337p日本欧洲亚洲大胆张筱雨| 日韩精品影视| 啪一啪鲁一鲁2019在线视频| 大胆av不用播放器在线播放| 欧美香蕉大胸在线视频观看| 精品少妇一区二区三区密爱| 丁香婷婷综合五月| 色啦啦av综合| 欧美交a欧美精品喷水| 国产欧美精品va在线观看| 精精国产xxxx视频在线播放| 久久久精品一区| 国产美女www| 一区二区三区免费网站| 一二三av在线| 国产精品视频| 国产真人做爰毛片视频直播| 国产麻豆精品| 国产精品久久久久久久久久免费| 日本在线一二三| 日韩欧美国产wwwww| 一二三四区视频| 国产精品乱人伦中文| 最新中文字幕视频| 国产麻豆综合| 国产1区2区3区中文字幕| 日本电影一区二区| 欧美日韩综合网| 日韩三级视频| 国产精品美女呻吟| 一区二区精品伦理... | 日本在线观看免费| 亚洲国产精品99| 国产美女永久免费| 欧美精品123区| 免费三片在线播放| 亚洲欧美日韩国产中文在线| 91精品国产高清91久久久久久 | 免费国产在线观看| 精品一区二区三区四区| 少妇一级淫片免费放中国| www国产精品av| 国产精品久久无码| 波多野结衣视频一区| 性囗交免费视频观看| 欧美日韩久久| 久久亚洲精品欧美| 亚洲七七久久综合桃花剧情介绍| 国产一区二区日韩| 好吊日在线视频| 99久久综合狠狠综合久久| 一区二区三区人妻| 麻豆91精品视频| 国产视频一区二区在线观看| 成年人在线看片| 日韩精品亚洲aⅴ在线影院| 国产激情一区二区三区在线观看 | av资源网在线观看| 亚洲美女视频网站| 中文字幕日韩免费| 色综合中文综合网| 国产精品国产精品国产| 中文字幕一区三区| 欧美日韩黄色网| 亚洲欧美日韩国产一区二区三区| 久久久久成人网站| 亚洲成人一区二区在线观看| 日本熟妇色xxxxx日本免费看| 精品国产福利在线| 日韩欧美国产成人精品免费| 亚洲女同ⅹxx女同tv| 国产无码精品在线观看| 欧美日韩人人澡狠狠躁视频| 黄色片中文字幕| 777午夜精品视频在线播放| 黄色一区二区视频| 69精品人人人人| 天天操天天干天天舔| 欧美性生交大片免网| 波多野结衣黄色| 日韩一区二区精品葵司在线| 国产成人精品一区二三区| 日本乱码高清不卡字幕| 在线永久看片免费的视频| 欧美一区二区三区性视频| 日日夜夜狠狠操| 欧美日韩免费观看一区三区| 久久久久久在线观看| 欧美精品色一区二区三区| 国产丰满美女做爰| 精品视频在线播放色网色视频| 午夜小视频在线| 中国china体内裑精亚洲片| 怡红院在线观看| 亚洲三级理论片| 久久国产精品99久久久久久丝袜| 美女久久久久| 亚洲一区二区三区久久| 欧美在线导航| 公共露出暴露狂另类av| 免费在线欧美黄色| 国内自拍偷拍视频| 久久久一区二区三区捆绑**| 欧美成人精品激情在线视频| 欧美性淫爽ww久久久久无| 亚洲免费一级片| 欧美日韩在线影院| 一区二区三区www污污污网站| 日韩片之四级片| 黄色一级大片在线免费看国产| zzijzzij亚洲日本成熟少妇| 肉肉视频在线观看| 国产中文字幕日韩| 亚洲区小说区图片区qvod按摩| 久久免费一级片| 成人毛片在线| 精品一区二区中文字幕| 老司机午夜精品| 国产jk精品白丝av在线观看 | 国产伊人精品在线| 你懂的视频欧美| 丁香花在线影院观看在线播放| 黑人巨大精品欧美黑白配亚洲| 亚洲第一综合网| 色综合激情五月| 欧美一区二区三区成人片在线| 久久这里只有精品视频首页| 国产成人精选| 日本不卡久久| 羞羞视频在线观看欧美| 三级电影在线看| 成人小视频免费在线观看| 日韩一级片大全| 亚洲国产精品自拍| 精品国产av一区二区三区| 亚洲国产精品99| 1024在线看片你懂得| 国产精品国产精品国产专区不卡| 在线精品小视频| 人妻巨大乳一二三区| 中文字幕精品三区| 91麻豆精品在线| 中日韩午夜理伦电影免费| 天天免费亚洲黑人免费| 久久久久网址| 日本欧美一区二区| 国产精品19p| 国产精品理伦片| 欧美另类高清videos的特点| 正在播放欧美一区| 精品一区二区三区免费看| 日本一区视频在线| 亚洲成人tv| 丁香婷婷激情网| 中日韩av电影| 国产免费高清av| 国产亚洲成av人片在线观看桃| 性xxxxfreexxxxx欧美丶| 国产精品久在线观看| 最新国产精品视频| www.色偷偷.com| **欧美大码日韩| 国产一区二区三区四区五区六区| 亚洲无线码一区二区三区| 久久久久久久久97| 亚洲丁香久久久| 欧美jizzhd欧美| 图片区日韩欧美亚洲| 在线观看国产一区二区三区| 久久精品99国产精品酒店日本| 一级黄色短视频| 中文字幕 久热精品 视频在线| 五月婷婷激情五月| 精品国产依人香蕉在线精品| 狂野欧美xxxx韩国少妇| 成人性生活视频免费看| 91在线视频观看| 中文字幕一区2区3区| 久久99久国产精品黄毛片入口| 国产婷婷视频在线| 岛国视频一区免费观看| 久久久久国产精品一区二区| 黄色香蕉视频在线观看| 亚洲第一免费播放区| 日韩理论视频| 中文字幕超清在线免费观看| a级高清视频欧美日韩| 亚洲欧美一二三区| 久久99热精品| 青青一区二区| 美女网站免费观看视频| 亚洲一级二级在线| avtt亚洲| 国产成人精品综合久久久| 日本一区二区中文字幕|