HarmonyOS业务场景相关多线程的应用问题

请问多线程场景消息队列如何设计,消息队列中存储的字节数组,怎么解决同步竞争问题?

1. 复杂业务场景下有多个线程参与工作,请问如何协调资源调度?

场景描述:

1. 摄像机设备列表最大可以添加64个IP监控摄像机,每个摄像机会开启线程不断发送心跳检测在线状态,当检测到在线时,检测心跳的线程会挂起,另外开启新的线程通过私有协议与摄像机进行连接,同一时间可能有几十个线程在参与工作,这种情况要怎么进行资源调度,请问最佳的解决方案是什么?

2.查看单台监控摄像机直播时,可能有五个以上的工作线程会同时参与,查看硬盘录像机的多台摄像机不同通道直播画面时,同时会有几十个线程参与工作。

a线程:控制命令消息发送。

b线程:控制命令消息接收。

c线程:视频流处理。

d线程:直播视频录制。

e线程:语音对讲。

HarmonyOS
2024-08-27 11:57:43
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
put_get

相关问题答复如下:

1、多线程场景消息队列如何设计。这里不是很理解,伙伴可以具体描述下要实现的效果么,如果只是线程间通信,可以使用emitter,参考:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/itc-with-emitter-V5

2、消息队列汇总存储的字节数组,怎么解决同步竞争问题。本质应该是对共享资源的操作吧,当前两种方式:

1)、使用SharedArrayBuffer达到共享内存的目的,但是需要通过原子操作保证其同步性,参考:TaskPool:https://developer.huawei.com/consumer/cn/doc/harmonyos-faqs-V5/faqs-arkts-kit-V5#section1993413110376worker:https://developer.huawei.com/consumer/cn/doc/harmonyos-faqs-V5/faqs-arkts-kit-V5#section18447333151614

2)、可使用Sendable装饰Class,实例中存储数据,Sendable装饰器支持SendableClass序列化。对象分配在各自的虚拟机内存空间,不存在竞争访问,不同线程可以同时读写,可参考:https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/arkts-utils/arkts-sendable.md,SharedArrayBuffer使用麻烦些,但资源占用比SendableClass要小一些。

3、问题场景下的资源调度。其实就是指线程调度吧,TaskPool和Worker都不需要关注调度,会由系统来自行调度,但TaskPool可以设置任务优先级,会有一定的干预调度能力。但各有各的限制,详细对比可参考:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/taskpool-vs-worker-V5

按线程数量,应该是要使用TaskPool,但相应限制也要注意:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/taskpool-introduction-V5

问题方案如下:

1、多线程场景消息队列如何设计。按伙伴您的场景,每个摄像机和应用设备(例如手机)之间通信的线程都是独立的,又因为线程之间上下文是独立的,应该不存在摄像机之间消息队列的冲突,而某一个摄像机和应用设备之间的消息,可以在线程内收到后直接处理。

2、时长远远超过3分钟,这样就不能使用TaskPool,而ThreadWorker的数量上限为8个。已支持TaskPool长时任务,参考:https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkts/js-apis-taskpool.md#longtask12

分享
微博
QQ
微信
回复
2024-08-27 17:56:05
相关问题
HarmonyOS 多线程并发相关问题
232浏览 • 1回复 待解决
HarmonyOS 线程相关问题
463浏览 • 1回复 待解决
HarmonyOS关于多线程问题
433浏览 • 1回复 待解决
HarmonyOS 多线程问题
448浏览 • 1回复 待解决
HarmonyOS 多线程写法限制
131浏览 • 1回复 待解决
OceanBase用在了哪些业务场景
5033浏览 • 1回复 待解决
HarmonyOS多线程使用?
163浏览 • 0回复 待解决
HarmonyOS 数据库多线程操作
161浏览 • 1回复 待解决
HarmonyOS是否支持多线程
109浏览 • 0回复 待解决
ArkTs多线程方案如何保证线程安全
2559浏览 • 2回复 待解决
HarmonyOS 混淆相关场景咨询
39浏览 • 1回复 待解决
如何使用taskpool实现多线程
1113浏览 • 1回复 待解决
HarmonyOS应用打包CPU架构相关问题
105浏览 • 0回复 待解决
如何通过卡片点击实现业务登录场景
1738浏览 • 1回复 待解决
多线程中EGL如何共享Context
386浏览 • 1回复 待解决
什么是系统多线程模型
372浏览 • 1回复 待解决