語言基礎類庫提供哪些功能?多線程并發如何實現?TaskPool(任務池)和Worker在實現和使用場景上有何不同?
針對開發者關注的并發等語言基礎類庫的相關能力,我們在新推出的語言基礎類庫開發指南中提供了詳細的介紹和開發指導,幫助開發者全面了解并發實現、容器類庫基礎操作、XML的生成解析與轉換等。
本期HarmonyOS開發者資料直通車帶您快速了解內容干貨~
一
語言基礎類庫文檔上新介紹
語言基礎類庫開發指南為HarmonyOS應用開發者提供了常用的基礎能力:
-
提供異步并發和多線程并發的能力。
-
提供常見的容器類庫增、刪、改、查的能力。
-
提供XML生成、解析與轉換、URI/URL構造和解析的能力。
-
提供常見的字符串和二進制數據處理的能力,以及控制臺打印的相關能力。
-
提供獲取進程信息和操作進程的能力。
ArkTS語言基礎類庫能力示意圖
本次上新的語言基礎類庫開發指南主要針對并發能力、容器類庫能力、XML生成解析與轉換這三大方面,全面清晰地講解了各自的實現機制并提供了對應的具體示例和指導,助力開發者實現應用開發。
開發者可在HarmonyOS文檔官網,直接搜索想了解的場景和能力,快速直達文檔進行瀏覽。
二
如何實現異步并發和多線程并發
并發是指在同一時間段內,能夠處理多個任務的能力。為了提升應用的響應速度與幀率,以及防止耗時任務對主線程的干擾,HarmonyOS系統提供了異步并發和多線程并發兩種處理策略。
-
異步并發:是指異步代碼在執行到一定程度后會被暫停,以便在未來某個時間點繼續執行,這種情況下,同一時間只有一段代碼在執行。
-
多線程并發:允許在同一時間段內同時執行多段代碼。在主線程繼續響應用戶操作和更新UI的同時,后臺也能執行耗時操作,從而避免應用出現卡頓。
ArkTS支持異步并發和多線程并發。
-
Promise和async/await提供異步并發能力,適用于單次I/O任務的開發場景。
-
TaskPool和Worker提供多線程并發能力,適用于CPU密集型任務、I/O密集型任務和同步任務等并發場景。
1、異步并發的實現
Promise和async/await提供異步并發能力,是標準的JS異步語法。異步代碼會被掛起并在之后繼續執行,同一時間只有一段代碼執行。
-
Promise是一種用于處理異步操作的對象,可以將異步操作轉換為類似于同步操作的風格,以方便代碼編寫和維護。Promise提供了一個狀態機制來管理異步操作的不同階段,并提供了一些方法來注冊回調函數以處理異步操作的成功或失敗的結果。
-
async/await是一種用于處理異步操作的Promise語法糖,使得編寫異步代碼變得更加簡單和易讀。通過使用async關鍵字聲明一個函數為異步函數,并使用await關鍵字等待Promise的解析(完成或拒絕),以同步的方式編寫異步操作的代碼。
異步并發能力適用于單次I/O任務的場景開發,例如一次網絡請求、一次文件讀寫等操作。
文檔鏈接
異步并發概述:https://developer.harmonyos.com/cn/docs/documentation/doc-guides-V3/async-concurrency-overview-0000001632690002-V3
單次I/O任務開發指導:https://developer.harmonyos.com/cn/docs/documentation/doc-guides-V3/single-io-development-0000001681129701-V3
2、多線程并發的實現
ArkTS提供了TaskPool和Worker兩種并發能力供開發者選擇。TaskPool和Worker的作用是為應用程序提供一個多線程的運行環境,用于處理耗時的計算任務或其他密集型任務。可以有效地避免這些任務阻塞主線程,從而最大化系統的利用率,降低整體資源消耗,并提高系統的整體性能。
由于TaskPool的工作線程會綁定系統的調度優先級,并且支持負載均衡(自動擴縮容),而Worker需要開發者自行創建,存在創建耗時以及不支持設置調度優先級,故在性能方面使用TaskPool會優于Worker,因此大多數場景推薦使用TaskPool。
TaskPool偏向獨立任務(線程級)維度,超長任務(大于3分鐘)會被系統自動回收;而Worker偏向線程的維度,支持長時間占據線程執行。
TaskPool和Worker各自的實現特點和適用場景存在差異,詳細請參見TaskPool和Worker的對比。
多線程并發能力,適用于CPU密集型任務、I/O密集型任務和同步任務等并發場景。
文檔鏈接
TaskPool和Worker的對比:https://developer.harmonyos.com/cn/docs/documentation/doc-guides-V3/taskpool-vs-worker-0000001632849934-V3
CPU密集型任務開發指導:https://developer.harmonyos.com/cn/docs/documentation/doc-guides-V3/cpu-intensive-task-development-0000001681369757-V3
I/O密集型任務開發指導:https://developer.harmonyos.com/cn/docs/documentation/doc-guides-V3/io-intensive-task-development-0000001681489597-V3
同步任務開發指導:https://developer.harmonyos.com/cn/docs/documentation/doc-guides-V3/sync-task-development-0000001632370254-V3
三
容器類庫的基礎操作
容器類庫,用于存儲各種數據類型的元素,并具備一系列處理數據元素的方法。
容器類采用了類似靜態語言的方式來實現,并通過對存儲位置以及屬性的限制,讓每種類型的數據都能在完成自身功能的基礎上去除冗余邏輯,保證了數據的高效訪問,提升了應用的性能。
當前提供了線性和非線性兩類容器,共14種。每種容器都有自身的特性及使用場景。
1、線性容器
線性容器實現能按順序訪問的數據結構,其底層主要通過數組實現,包括ArrayList、Vector、List、LinkedList、Deque、Queue、Stack七種。
線性容器,充分考慮了數據訪問的速度,運行時(Runtime)通過一條字節碼指令就可以完成增、刪、改、查等操作。
2、非線性容器
非線性容器實現能快速查找的數據結構,其底層通過hash或者紅黑樹實現,包括HashMap、HashSet、TreeMap、TreeSet、LightWeightMap、LightWeightSet、PlainArray七種。非線性容器中的key及value的類型均滿足ECMA標準。
文檔鏈接
線性容器:https://developer.harmonyos.com/cn/docs/documentation/doc-guides-V3/linear-container-0000001681209893-V3
非線性容器:https://developer.harmonyos.com/cn/docs/documentation/doc-guides-V3/nonlinear-container-0000001632530094-V3
四
XML生成、解析與轉換
XML(可擴展標記語言)是一種用于描述數據的標記語言,旨在提供一種通用的方式來傳輸和存儲數據,特別是Web應用程序中經常使用的數據。XML并不預定義標記。因此,XML更加靈活,并且可以適用于廣泛的應用領域。語言基礎類庫提供了XML相關的基礎能力,包括:XML的生成、XML的解析和XML的轉換。
1、XML生成
XML模塊提供XmlSerializer類來生成XML文件,輸入為固定長度的Arraybuffer或DataView對象,該對象用于存放輸出的XML數據。通過調用不同的方法來寫入不同的內容,可以生成一份完整的XML文件。
2、XML解析
對于以XML作為載體傳遞的數據,實際使用中需要對相關的節點進行解析,一般包括解析XML標簽和標簽值、解析XML屬性和屬性值、解析XML事件類型和元素深度三類場景。
XML模塊提供XmlPullParser類對XML文件解析,輸入為含有XML文本的ArrayBufffer或DataView,輸出為解析得到的信息。
3、XML轉換
將XML文本轉換為JavaScript對象可以更輕松地處理和操作數據,并且更適合在JavaScript應用程序中使用。
語言基礎類庫提供ConvertXML類將XML文本轉換為JavaScript對象,輸入為待轉換的XML字符串及轉換選項,輸出為轉換后的JavaScript對象。
文檔鏈接
XML生成:https://developer.harmonyos.com/cn/docs/documentation/doc-guides-V3/xml-generation-0000001681489601-V3
XML解析:https://developer.harmonyos.com/cn/docs/documentation/doc-guides-V3/xml-parsing-0000001632370258-V3
XML轉換:https://developer.harmonyos.com/cn/docs/documentation/doc-guides-V3/xml-conversion-0000001632690010-V3
五
我們期待您的反饋
以上就是本期為大家準備的HarmonyOS語言基礎類庫開發指南上新內容,希望能夠幫助開發者更高效地探索、體驗、上手HarmonyOS。同時,我們十分重視開發者的意見,歡迎各位開發者在HarmonyOS應用開發官網積極反饋意見。
我們將持續提升文檔體驗、豐富和完善內容,感謝各位開發者的支持及信賴,您的滿意是我們持續提升文檔體驗的目標和動力。
請關注HarmonyOS開發者公眾號更多HarmonyOS開發者資料直通車相關推送,以獲取最新文檔和內容資源!
-
HarmonyOS
+關注
關注
79文章
1967瀏覽量
30035
原文標題:HarmonyOS語言基礎類庫開發指南上線啦!
文章出處:【微信號:HarmonyOS_Dev,微信公眾號:HarmonyOS開發者】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論