0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于Openharmony輕量級操作系統(tǒng)的分布式數據管理開發(fā)案例

福州市凌睿智捷電子有限公司 ? 2024-08-07 08:23 ? 次閱讀

實驗內容

本例程演示如何在小凌派-RK2206開發(fā)板上使用OpenHarmony輕量級操作系統(tǒng)進行KvStore(即分布式數據管理)數據讀寫。

例程:

(1)創(chuàng)建兩個線程,一個負責寫入KvStore存儲,一個負責讀取KvStore存儲;

(2)每1秒進行1次讀寫操作;

程序設計

在本章節(jié)中,我們將了解OpenHarmony KvStore存儲接口,如文件如何獲取數據、設置數據、刪除數據和清除緩存。

API分析

頭文件

//utils/native/lite/include/kv_store.h

UtilsGetValue()

intUtilsGetValue(constchar*key,char*value,unsignedintlen);

描述:

從文件系統(tǒng)或緩存中獲取與指定鍵匹配的值。

參數

名字描述
key鍵值
value獲取數據
len數據長度

返回值:

返回值描述
0成功
其它見utils/native/lite/include/ohos_errno.h

UtilsSetValue()

intUtilsSetValue(constchar*key,constchar*value);

描述:

添加或更新與文件系統(tǒng)或緩存中的指定鍵匹配的值。

參數:

名字描述
key鍵值
value寫入數據

返回值:

返回值描述
0成功
其它見utils/native/lite/include/ohos_errno.h

UtilsDeleteValue()

intUtilsDeleteValue(constchar*key);

描述:

從文件系統(tǒng)或緩存中刪除與指定鍵匹配的值。

參數:

名字描述
key鍵值

返回值:

返回值描述
0成功
其它見utils/native/lite/include/ohos_errno.h

ClearKVCache()

int ClearKVCache(void);

描述:

從緩存中清除所有鍵值對。

返回值:

返回值描述
0成功
其它見utils/native/lite/include/ohos_errno.h

軟件設計

主要代碼分析

在kv_store_example函數中通過LOS_TaskCreate函數創(chuàng)建兩個線程:kv_store_write_thread、kv_store_read_thread。

void kv_store_example(){ unsigned int thread_id1; unsigned int thread_id2; TSK_INIT_PARAM_S task1 = {0}; TSK_INIT_PARAM_S task2 = {0}; unsigned int ret = LOS_OK;

task1.pfnTaskEntry = (TSK_ENTRY_FUNC)kv_store_write_thread; task1.uwStackSize = 1024 * 10; task1.pcName = "kv_store_write_thread"; task1.usTaskPrio = 25; ret = LOS_TaskCreate(&thread_id1, &task1); if (ret != LOS_OK) { printf("Falied to create kv_store_write_thread ret:0x%x\n", ret); return; }

task2.pfnTaskEntry = (TSK_ENTRY_FUNC)kv_store_read_thread; task2.uwStackSize = 1024 * 10; task2.pcName = "kv_store_read_thread"; task2.usTaskPrio = 25; ret = LOS_TaskCreate(&thread_id2, &task2); if (ret != LOS_OK) { printf("Falied to create kv_store_read_thread ret:0x%x\n", ret); return; }}

APP_FEATURE_INIT(kv_store_example);

kv_store_write_thread線程負責創(chuàng)建/更新KV存儲,每1秒寫入一段內容,重復以上流程。

void kv_store_write_thread(){ int ret = 0; char defValue[50] = {0}; int current = 0;

while (1) { snprintf(defValue, sizeof(defValue), "test value %d.", current); int ret = UtilsSetValue(key, defValue); if (ret < 0) { printf("[error] %d\r\n", ret); } else { printf("[write] write success\r\n"); }

current++; LOS_Msleep(1000); }}

kv_store_read_thread線程負責讀取KV存儲,每1秒讀取一段內容,重復以上流程。

void kv_store_read_thread(){ int ret = 0; char value1[50] = {0};

while (1) { ret = UtilsGetValue(key, value1, sizeof(value1)); if (ret < 0) { printf("[error] %d\r\n", ret); } else { printf("[read] key: %s value:%s\r\n", key, value1); }

LOS_Msleep(1000); }}

編譯調試

修改 BUILD.gn 文件

修改 vendor/lockzhiner/rk2206/sample 路徑下 BUILD.gn 文件,指定 a10_kv_store 參與編譯。

"./a10_kv_store:kv_store_example",

修改 device/rockchip/rk2206/sdk_liteos路徑下 Makefile 文件,添加 `-lkv_store_example` 參與編譯。

app_LIBS = -lkv_store_example

運行結果

示例代碼編譯燒錄代碼后,按下開發(fā)板的RESET按鍵,通過串口助手查看日志。

HalFileInit: Flash Init Successful![write] write success[read] key: key_sample value:test value 0.[write] write success[read] key: key_sample value:test value 1.[write] write success[read] key: key_sample value:test value 2.[write] write success[read]key:key_samplevalue:testvalue3.

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯系本站處理。 舉報投訴
  • 操作系統(tǒng)

    關注

    37

    文章

    6603

    瀏覽量

    123017
  • 開發(fā)板
    +關注

    關注

    25

    文章

    4833

    瀏覽量

    96819
  • 分布式數據
    +關注

    關注

    0

    文章

    9

    瀏覽量

    8915
  • OpenHarmony
    +關注

    關注

    25

    文章

    3607

    瀏覽量

    15954
收藏 人收藏

    評論

    相關推薦

    HarmonyOS開發(fā)實例:【分布式數據管理

    eTS中分布式數據管理的使用,包括KVManager對象實例的創(chuàng)建和KVStore數據流轉的使用。
    的頭像 發(fā)表于 04-11 09:57 ?836次閱讀
    HarmonyOS<b class='flag-5'>開發(fā)</b>實例:【<b class='flag-5'>分布式</b><b class='flag-5'>數據管理</b>】

    基于Openharmony輕量級操作系統(tǒng)分布式數據管理開發(fā)案

    實驗內容 本例程演示如何在小凌派-RK2206開發(fā)板上使用OpenHarmony輕量級操作系統(tǒng)進行KvStore(即分布式
    發(fā)表于 08-06 11:56

    創(chuàng)建51輕量級操作系統(tǒng)

    創(chuàng)建51輕量級操作系統(tǒng)
    發(fā)表于 09-29 09:58

    HarmonyOS鴻蒙操作系統(tǒng)之什么是“基于微內核的全場景分布式操作系統(tǒng)”?

    分布式:這個要提它對應的一個詞來看,就是集中式;分布式是負責處理系統(tǒng)資源和控制程序運行。它與集中式操作系統(tǒng)的區(qū)別在于資源管理、進程通信和
    發(fā)表于 09-23 17:06

    OpenHarmony 3.0 LTS 新增特性功能

    認證的基本能力。支持關系型數據庫、分布式數據管理基礎能力。支持方舟JS編譯工具鏈和運行時,支持OpenHarmony JS UI框架應用開發(fā)
    發(fā)表于 09-30 08:24

    分布式操作系統(tǒng)的相關資料分享

    文章目錄分布式操作系統(tǒng)嵌入操作系統(tǒng)集群操作系統(tǒng)集群系統(tǒng)管理
    發(fā)表于 12-22 07:23

    OpenHarmony標準設備應用開發(fā)(三)——分布式數據管理

    所示的井字過三關游戲來講解分布式數據管理在應用中的使用。Demo 簡介:Demo 基于 OpenHarmony 系統(tǒng)使用 eTS 語言進行編寫,本 Demo 主要通過設備認證,
    發(fā)表于 04-07 18:48

    OpenHarmony3.1分布式技術資料合集

    1、OpenHarmony3.1的分布式硬件管理框架簡介分布式硬件管理框架是為分布式硬件子
    發(fā)表于 04-11 11:50

    【學習打卡】OpenHarmony分布式數據管理介紹

    使用它來做出更明智的決策,如果一個系統(tǒng)缺乏適當的數據管理,那就可能會導致數據孤島、數據集之間不一致,甚至數據本身存在錯誤。有效的
    發(fā)表于 07-15 15:49

    【學習打卡】OpenHarmony分布式任務調度

    之前我們分享過分布式軟總線和分布式數據管理,今天主要說一下OpenHarmony分布式任務調度,分布式
    發(fā)表于 07-18 17:06

    開發(fā)樣例】OpenHarmony分布式購物車

    設計OpenHarmony技術特性eTS UI分布式調度分布式數據管理3.支持OpenHarmony版本
    發(fā)表于 07-29 14:17

    好書推薦|《OpenHarmony嵌入操作原理與應用》

    OpenHarmony嵌入操作原理與應用》一書以物聯網應用為切入點,以瑞芯微 RK2206芯片為核心控制器,詳細講解了 OpenHarmony(開源鴻蒙)
    發(fā)表于 03-25 16:01

    鴻蒙操作系統(tǒng)的前世今生

    分布式數據管理分布式的安全,這三點將HarmonyOS的分布式能力提升到了另一個層次, 此版本可用于大屏、手表和車機。 2020年12月,華為發(fā)布面向
    發(fā)表于 10-08 19:55

    如何通過分布式數據管理實現多臺設備間的數據同步更新

    OpenHarmony 中如何實現音樂播放,顯示動畫,轉場動畫(頁面間轉場)等功能。本章是 OpenHarmony 標準設備應用開發(fā)的第三篇文章,將會在前面兩章的基礎上給大家講解分布式
    的頭像 發(fā)表于 02-25 11:47 ?3464次閱讀
    如何通過<b class='flag-5'>分布式</b><b class='flag-5'>數據管理</b>實現多臺設備間的<b class='flag-5'>數據</b>同步更新

    鴻蒙開發(fā)接口數據管理:【@ohos.data.distributedData (分布式數據管理)】

    分布式數據管理為應用程序提供不同設備間數據庫的分布式協(xié)同能力。通過調用分布式數據各個接口,應用程
    的頭像 發(fā)表于 06-07 09:30 ?802次閱讀
    鴻蒙<b class='flag-5'>開發(fā)</b>接口<b class='flag-5'>數據管理</b>:【@ohos.data.distributedData (<b class='flag-5'>分布式</b><b class='flag-5'>數據管理</b>)】