0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于Openharmony轻量级操作系统的分布式数据管理开发案例

福州市凌睿智捷电子有限公司 2024-08-07 08:23 次阅读

实验内容

本例程演示如何在小凌派-RK2206开发板上使用OpenHarmony轻量级操作系统进行KvStore(即分布式数据管理)数据读写。

例程:

(1)创建两个线程,一个负责写入KvStore存储,一个负责读取KvStore存储;

(2)每1秒进行1次读写操作;

程序设计

在本章节中,我们将了解OpenHarmony KvStore存储接口,如文件如何获取数据、设置数据、删除数据和清除缓存。

API分析

头文件

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

UtilsGetValue()

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

描述:

从文件系统或缓存中获取与指定键匹配的值。

参数

名字描述
key键值
value获取数据
len数据长度

返回值:

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

UtilsSetValue()

intUtilsSetValue(constchar*key,constchar*value);

描述:

添加或更新与文件系统或缓存中的指定键匹配的值。

参数:

名字描述
key键值
value写入数据

返回值:

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

UtilsDeleteValue()

intUtilsDeleteValue(constchar*key);

描述:

从文件系统或缓存中删除与指定键匹配的值。

参数:

名字描述
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函数创建两个线程: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线程负责创建/更新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

运行结果

示例代码编译烧录代码后,按下开发板的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.

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 操作系统
    +关注

    关注

    37

    文章

    6727

    浏览量

    123180
  • 开发板
    +关注

    关注

    25

    文章

    4933

    浏览量

    97157
  • 分布式数据
    +关注

    关注

    0

    文章

    9

    浏览量

    8916
  • OpenHarmony
    +关注

    关注

    25

    文章

    3657

    浏览量

    16127
收藏 人收藏

    评论

    相关推荐

    HarmonyOS开发实例:【分布式数据管理

    eTS中分布式数据管理的使用,包括KVManager对象实例的创建和KVStore数据流转的使用。
    的头像 发表于 04-11 09:57 889次阅读
    HarmonyOS<b class='flag-5'>开发</b>实例:【<b class='flag-5'>分布式</b><b class='flag-5'>数据管理</b>】

    基于Openharmony轻量级操作系统分布式数据管理开发案

    实验内容 本例程演示如何在小凌派-RK2206开发板上使用OpenHarmony轻量级操作系统进行KvStore(即分布式
    发表于 08-06 11:56

    创建51轻量级操作系统

    创建51轻量级操作系统
    发表于 09-29 09:58

    HarmonyOS鸿蒙操作系统之什么是“基于微内核的全场景分布式操作系统”?

    分布式:这个要提它对应的一个词来看,就是集中式;分布式是负责处理系统资源和控制程序运行。它与集中式操作系统的区别在于资源管理、进程通信和
    发表于 09-23 17:06

    OpenHarmony 3.0 LTS 新增特性功能

    认证的基本能力。支持关系型数据库、分布式数据管理基础能力。支持方舟JS编译工具链和运行时,支持OpenHarmony JS UI框架应用开发
    发表于 09-30 08:24

    分布式操作系统的相关资料分享

    文章目录分布式操作系统嵌入操作系统集群操作系统集群系统管理
    发表于 12-22 07:23

    OpenHarmony标准设备应用开发(三)——分布式数据管理

    所示的井字过三关游戏来讲解分布式数据管理在应用中的使用。Demo 简介:Demo 基于 OpenHarmony 系统使用 eTS 语言进行编写,本 Demo 主要通过设备认证,
    发表于 04-07 18:48

    OpenHarmony3.1分布式技术资料合集

    1、OpenHarmony3.1的分布式硬件管理框架简介分布式硬件管理框架是为分布式硬件子
    发表于 04-11 11:50

    【学习打卡】OpenHarmony分布式数据管理介绍

    使用它来做出更明智的决策,如果一个系统缺乏适当的数据管理,那就可能会导致数据孤岛、数据集之间不一致,甚至数据本身存在错误。有效的
    发表于 07-15 15:49

    【学习打卡】OpenHarmony分布式任务调度

    之前我们分享过分布式软总线和分布式数据管理,今天主要说一下OpenHarmony分布式任务调度,分布式
    发表于 07-18 17:06

    开发样例】OpenHarmony分布式购物车

    设计OpenHarmony技术特性eTS UI分布式调度分布式数据管理3.支持OpenHarmony版本
    发表于 07-29 14:17

    好书推荐|《OpenHarmony嵌入操作原理与应用》

    OpenHarmony嵌入操作原理与应用》一书以物联网应用为切入点,以瑞芯微 RK2206芯片为核心控制器,详细讲解了 OpenHarmony(开源鸿蒙)
    发表于 03-25 16:01

    鸿蒙操作系统的前世今生

    分布式数据管理分布式的安全,这三点将HarmonyOS的分布式能力提升到了另一个层次, 此版本可用于大屏、手表和车机。 2020年12月,华为发布面向
    发表于 10-08 19:55

    如何通过分布式数据管理实现多台设备间的数据同步更新

    OpenHarmony 中如何实现音乐播放,显示动画,转场动画(页面间转场)等功能。本章是 OpenHarmony 标准设备应用开发的第三篇文章,将会在前面两章的基础上给大家讲解分布式
    的头像 发表于 02-25 11:47 3507次阅读
    如何通过<b class='flag-5'>分布式</b><b class='flag-5'>数据管理</b>实现多台设备间的<b class='flag-5'>数据</b>同步更新

    鸿蒙开发接口数据管理:【@ohos.data.distributedData (分布式数据管理)】

    分布式数据管理为应用程序提供不同设备间数据库的分布式协同能力。通过调用分布式数据各个接口,应用程
    的头像 发表于 06-07 09:30 891次阅读
    鸿蒙<b class='flag-5'>开发</b>接口<b class='flag-5'>数据管理</b>:【@ohos.data.distributedData (<b class='flag-5'>分布式</b><b class='flag-5'>数据管理</b>)】