一台手机同时发给平板、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并行跑谁慢谁自己等不拖别人。下一篇做工程收尾异常恢复、状态机、资源释放。
企业数字化 ERP 产品动态
相关推荐
基于FFmpeg与FFprobe的视频去重实战:从原理到跨平台流水线 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 3:37:27
自己做的视频网站如何赚钱怎么选 视频网站变现5步走:SEO怎么选才不踩坑 备案流程一头雾水?很多创业者卡在第一步,以为搞定了服务器和域名,网站就能直接上线收钱。其实,没搞定ICP备案,你的视频站连门都进不去,更别提赚钱了。这时候, 怎么选… · 2026/9/27 3:37:27
企业微信PC版Hook开发:消息同步与性能优化全解析 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/27 3:37:27
项目没有量化数据,也能写清个人贡献 项目没有量化数据,也能写清个人贡献
写项目经历时,很多人一看到“用数字说明成果”,就开始为没有增长率、转化率或收入数据发愁。数字确实能帮读者快速判断规模,但不是所有岗位都会留下可归因的指标。实习生参与流程优化、运营同学… · 2026/9/27 4:19:33
多端同步内容知识库怎么选?从使用场景和选型维度聊聊 日常要处理论文笔记、代码片段、技术文档、素材截图,办公室电脑、家里笔记本、手机、平板之间来回切换。多端同步可以让知识库在不同设备之间保持一致,提升查找、整理和创作效率。本文从多端同步、内容整合、AI问答创作、分享协作等角度,整理… · 2026/9/27 4:19:33
网页制作培训好学吗?3年实操告诉你哪家好不踩坑 网页制作培训好学吗?3年实操告诉你哪家好不踩坑 找建站公司怕被坑高价?别急,先搞懂 网页制作培训好学吗 这个底层逻辑,再问 哪家好 才有底气。… · 2026/9/27 4:19:33
改需求拖一周?perl网站建设怎么选才不踩坑 改需求拖一周?perl网站建设怎么选才不踩坑 改个页面文案,建站公司回复“下周安排”,你盯着进度条干等。这种被技术黑箱卡脖子的感觉,比服务器宕机还让人抓狂。很多老板以为只要给钱就能买服务,却没搞懂底层技术栈的选型逻辑。其实,… · 2026/9/27 4:19:27
5分钟把NVIDIA Agent Skills装进Claude Code:新手必看的AI Agent技能快速上手教程 5分钟把NVIDIA Agent Skills装进Claude Code:新手必看的AI Agent技能快速上手教程 【免费下载链接】skills Agent Skills for NVIDIA products — install into Claude Code, Codex, and other coding agents to run Physical AI, robotics, simulation, CUDA, and … · 2026/9/27 4:19:27
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现 简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01
汕头网站建设制作厂家避坑指南:5大注意事项救急 汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习 简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现 简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01
汕头网站建设制作厂家避坑指南:5大注意事项救急 汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习 简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01