新闻详情

新闻详情

首页 / 资讯中心 / 详情

《HarmonyOS 7 精准碰一碰跨设备协作开发实战》06:多设备并发分享、任务隔离与性能优化【鸿蒙心迹】

发布时间:2026/11/12 15:00:16来源:尧图网络
《HarmonyOS 7 精准碰一碰跨设备协作开发实战》06:多设备并发分享、任务隔离与性能优化【鸿蒙心迹】
一台手机同时发给平板、PC、笔记本三台设备。其中PC网络慢会不会把另外两台也拖慢这就是多设备并发要解决的问题。前五篇都是一台设备发给另一台。这一篇升级成一台设备同时发给多台。我之前做过一个测试手机上会议资料同时发给平板A、平板B、PC。结果呢PC网络特别慢传了半天还没传完。平板A本来10秒就能完成结果等了30秒。平板B更惨直接超时失败了。为什么因为我把所有设备的任务放在一个队列里跑。PC那个任务卡住了后面的任务全在等。这就是多设备并发的坑一台设备慢不能影响其他设备。一、每台设备一个独立Session正确的做法是每台目标设备建一个独立的DeviceSession。每个Session自己管自己的任务队列自己的传输状态自己的重试次数自己的统计信息A设备慢没关系它自己慢慢传。B设备正常跑自己的不受影响。二、DeviceSession每台设备独立运行这段代码解决什么问题单设备独立会话。文件session/DeviceSession.ets用途管理单台设备的传输任务接入位置多设备分发时创建classDeviceSession{deviceId:string;deviceName:string;taskQueue:TransferTask[][];status:idle|connecting|transferring|failed|completedidle;successCount:number0;failCount:number0;retryCount:number0;constructor(deviceId:string,deviceName:string){this.deviceIddeviceId;this.deviceNamedeviceName;}// 添加任务addTask(task:TransferTask){this.taskQueue.push(task);}// 处理任务asyncprocessTasks(){this.statustransferring;while(this.taskQueue.length0){lettaskthis.taskQueue.shift()!;try{awaitthis.sendOne(task);this.successCount;}catch(e){this.failCount;console.warn(设备 this.deviceName 任务失败e);}}this.statuscompleted;}}三、多Session调度不要互相等有了多个DeviceSession怎么调度很简单每个Session独立启动不要互相等待。手机同时给三台设备发资料就是创建三个Session每个Session独立跑自己的任务队列。这段代码解决什么问题多设备并发调度。文件scheduler/MultiDeviceScheduler.ets用途调度多设备并发传输接入位置批量分发时调用classMultiDeviceScheduler{privatesessions:Mapstring,DeviceSessionnewMap();// 创建多设备会话createSessions(devices:Array{id:string,name:string}){for(letdevofdevices){letsessionnewDeviceSession(dev.id,dev.name);this.sessions.set(dev.id,session);}}// 给所有设备发任务broadcastTask(task:TransferTask){for(letsessionofthis.sessions.values()){// 每个设备一个任务副本lettaskCopy{...task,id:task.id_session.deviceId};session.addTask(taskCopy);}}// 启动所有会话并行asyncstartAll(){letpromises[];for(letsessionofthis.sessions.values()){promises.push(session.processTasks());}// 等所有完成不互相阻塞awaitPromise.allSettled(promises);console.info(所有设备传输完成);}}四、多设备并发最容易踩的坑第一个坑所有设备共用一个队列。一台设备慢整个队列卡住其他设备都在等。正确做法是每台设备独立队列。第二个坑一台失败全部取消。PC传失败了平板也跟着取消了。不对单台失败不影响其他设备。第三个坑重复任务没去重。用户点了两次全部分发结果每台设备收到两份相同的任务。要做任务幂等性判断。第四个坑内存峰值没控制。三台设备同时传大文件每台都读进内存内存直接涨三倍。要控制每台设备的并发数。第五个坑失败重试不隔离。PC网络不好一直重试占着CPU和网络影响其他设备。重试要限制次数和间隔。第六个坑没有性能统计。哪台设备慢慢在哪传了多少成功率多少没有统计就是黑盒。第六篇总结多设备并发的核心是隔离。每台设备一个独立Session自己的任务队列、自己的状态、自己的重试。一台设备慢或失败不影响其他设备。工程上最容易翻车的是把所有设备的任务放一个队列里一台卡住全部卡死。分开以后用Promise.allSettled并行跑谁慢谁自己等不拖别人。下一篇做工程收尾异常恢复、状态机、资源释放。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

【外设】之大彩串口显示屏 2026/11/11 13:52:51

【外设】之大彩串口显示屏

大彩串口屏初步使用 1 .官网下载 STM32 屏幕 GUI 设计资料 http://www.gz-dc.com/category/typeid/4112 找到 STM32 Keil 工程,移植相关代码因项目而异进行移植,由于项目简单,本人只对用到的指令接口进行修改。 比如:注意事项&…

阅读更多 →
无法下载Windows系统iso文件 2026/11/10 19:42:40

无法下载Windows系统iso文件

当我遇到这个问题的时候,我打开了一个网站: 登录 然后我打算下载的时候: 突然那个官方的连接就可以下载了:

阅读更多 →
【清华代码熊】DeepSeek V4.1 Flash 后训练详解 2026/11/12 9:50:02

【清华代码熊】DeepSeek V4.1 Flash 后训练详解

📌 上期解析了 DeepSeek V4.1 Flash 模型架构改进,本期解析 DeepSeek V4.1 Flash 预训练/后训练技术: 🌟 预训练:45T 文本 多模态混合语料、直接训练 sparse attention(取消 DeepSeek V4 的 dense 冷启动&…

阅读更多 →
Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ... 2026/11/12 9:25:38

Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ...

文章主要内容和创新点 主要内容 本文聚焦于多模态大语言模型(MLLM)强化学习(RL)训练中的效率问题,提出了一个名为Shuffle-R1的框架。研究发现,当前RL训练存在两个关键缺陷: 优势值坍缩(Advantage Collapsing):批次中大多数优势值集中在零附近,导致有效梯度信号被淹…

阅读更多 →
PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction 2026/11/11 15:37:39

PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction

一、文章主要内容总结 本文聚焦于利用大型语言模型(LLMs)实现个人身份信息(PII)脱敏的研究,旨在解决传统脱敏方法(如基于规则的系统、领域特定命名实体识别(NER)模型)泛化能力差、跨格式/跨语境适应性弱的问题。 研究通过全面评估多种LLM架构(包括密集型LLM(D-LLM…

阅读更多 →
LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model 2026/11/10 17:14:10

LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model

文章主要内容和创新点 主要内容 本文聚焦于二进制图像-文本相关性评估任务(判断图像与文本“相关”或“不相关”),针对该任务中文本格式多样、相关性定义随场景变化等挑战,提出了基于多模态大语言模型(MLLM)的解决方案LLaVA-RE。 模型设计:LLaVA-RE基于LLaVA 1.5架构,…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉