HarmonyOS业务场景相关多线程的应用问题
请问多线程场景消息队列如何设计,消息队列中存储的字节数组,怎么解决同步竞争问题?
1. 复杂业务场景下有多个线程参与工作,请问如何协调资源调度?
场景描述:
1. 摄像机设备列表最大可以添加64个IP监控摄像机,每个摄像机会开启线程不断发送心跳检测在线状态,当检测到在线时,检测心跳的线程会挂起,另外开启新的线程通过私有协议与摄像机进行连接,同一时间可能有几十个线程在参与工作,这种情况要怎么进行资源调度,请问最佳的解决方案是什么?
2.查看单台监控摄像机直播时,可能有五个以上的工作线程会同时参与,查看硬盘录像机的多台摄像机不同通道直播画面时,同时会有几十个线程参与工作。
a线程:控制命令消息发送。
b线程:控制命令消息接收。
c线程:视频流处理。
d线程:直播视频录制。
e线程:语音对讲。
HarmonyOS
赞
收藏 0
回答 1
相关问题
HarmonyOS 多线程并发相关问题
971浏览 • 1回复 待解决
HarmonyOS关于多线程的问题
1230浏览 • 1回复 待解决
HarmonyOS 多线程锁问题
1350浏览 • 1回复 待解决
HarmonyOS 多线程处理业务逻辑时,如何实现序列化
840浏览 • 1回复 待解决
HarmonyOS 多线程数据互通问题
708浏览 • 2回复 待解决
HarmonyOS 多线程安全问题验证
922浏览 • 1回复 待解决
HarmonyOS 线程相关问题
1327浏览 • 1回复 待解决
HarmonyOS Native Module 接口的多线程调用问题
1075浏览 • 1回复 待解决
EGL绘制是否支持多线程?如何在多线程的场景下同时操作一块buffer进行图形绘制
2717浏览 • 1回复 待解决
HarmonyOS中的多线程和Android的多线程有何区别?
852浏览 • 0回复 待解决
HarmonyOS 运行时AOP方案,多线程场景如何处理?
899浏览 • 1回复 待解决
HarmonyOS 多线程传递不可sendable对象问题
860浏览 • 1回复 待解决
#鸿蒙通关秘籍#在多线程场景如何选择合适的并发策略?
908浏览 • 1回复 待解决
如何在HarmonyOS应用中实现多线程编程?
334浏览 • 1回复 待解决
HarmonyOS多线程使用?
783浏览 • 0回复 待解决
HarmonyOS Sendable的类实例,在以下场景能否在多线程中共享
786浏览 • 1回复 待解决
HarmonyOS是否支持多线程?
758浏览 • 0回复 待解决
在多线程的场景下EGL同时操作一块buffer进行绘制
1152浏览 • 1回复 待解决
HarmonyOS 有关多线程的资料文档
792浏览 • 1回复 待解决
HarmonyOS 多线程写法限制
840浏览 • 1回复 待解决
HarmonyOS 关于多线程并发的使用
874浏览 • 1回复 待解决
OceanBase用在了哪些业务场景?
5964浏览 • 1回复 待解决
什么是系统的多线程模型
1084浏览 • 1回复 待解决
HarmonyOS 多线程共享数据方法的疑惑
910浏览 • 2回复 待解决
#鸿蒙通关秘籍#鸿蒙应用中如何使用UI主线程调用多线程方法?
980浏览 • 1回复 待解决
相关问题答复如下:
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