网站开发的基本流程 岗位及职责标识设计公司排名

张小明 2026/3/2 21:30:28
网站开发的基本流程 岗位及职责,标识设计公司排名,佛山模板网站建设,最新房屋装修效果图大全1.并行循环基本语法 2.并行循环原理 3.并行循环中的异常处理 4.停止 5.中断1.并行循环基本语法 C#中的Parallel类(位于 System.Threading.Tasks 命名空间)是.NET提供的并行编程核心工具, 旨在简化数据并行和 任务并行开发, 充分利用多核CPU资源, 避免手…1.并行循环基本语法2.并行循环原理3.并行循环中的异常处理4.停止5.中断1.并行循环基本语法C#中的Parallel类(位于 System.Threading.Tasks 命名空间)是.NET提供的并行编程核心工具,旨在简化数据并行和任务并行开发,充分利用多核CPU资源,避免手动管理线程的复杂度;它的核心目标是将串行执行的任务(如循环、独立方 法)自动拆分为多个并行任务, 复用线程池线程执行,提升CPU密集型任务的效率1).Parallel.For:并行版for循环 替代传统的串行for循环,将循环迭代拆分为多个并行任务执行,适合遍历连续整数范围的场景usingSystem;usingSystem.Threading.Tasks;classParallelForDemo{staticvoidMain(){int[]datanewint[10000];// 初始化数组串行for(inti0;idata.Length;i)data[i]i;// 并行遍历数组每个元素乘以2CPU密集型Parallel.For(0,data.Length,i{data[i]*2;// 打印线程ID验证并行不同迭代可能在不同线程执行if(i%10000)Console.WriteLine($迭代{i}线程ID:{System.Threading.Thread.CurrentThread.ManagedThreadId});});Console.WriteLine($第一个元素:{data[0]}, 最后一个元素:{data[9999]});}}2).Parallel.Foreach:并行版foreach替代传统的串行foreach,遍历实现了IEnumerable的集合(如 List、数组、Dictionary),适合遍历非连续集合的场景usingSystem;usingSystem.Collections.Generic;usingSystem.Threading.Tasks;classParallelForEachDemo{staticvoidMain(){ListstringfruitsnewListstring{Apple,Banana,Orange,Grape,Mango};// 并行遍历集合处理每个元素Parallel.ForEach(fruits,fruit{stringupperFruitfruit.ToUpper();Console.WriteLine($处理结果:{upperFruit}(线程ID:{System.Threading.Thread.CurrentThread.ManagedThreadId}));});}}3).Parallel.Invoke:并行执行多个独立的任务 用于一次性执行多个无返回值、无参数的独立方法,适合多任务并行执行场景usingSystem;usingSystem.Threading.Tasks;classParallelDemo{staticvoidMain(){// 并行执行两个独立方法无需关注执行顺序Parallel.Invoke(()CalculateSum(1,1000000),// 任务1计算1到100万的和()PrintMessage(Hello Parallel)// 任务2打印信息);Console.WriteLine(所有并行任务执行完成);}staticvoidCalculateSum(intstart,intend){longsum0;for(intistart;iend;i)sumi;Console.WriteLine($Sum:{sum}(线程ID:{System.Threading.Thread.CurrentThread.ManagedThreadId}));}staticvoidPrintMessage(stringmsg){Console.WriteLine(${msg}(线程ID:{System.Threading.Thread.CurrentThread.ManagedThreadId}));}}2.并行循环原理并行循环的原理是分块减少调度开销和线程复用避免创建成本a.数据分区(分块)—— 不是均分,而是动态按需分块并行循环首先会将待处理的数据集(比如0~999的迭代、List集合)拆分为若干分区(Chunk),但不是静态均分,而是由.NET 的分区器(Partitioner)动态调整-静态分区(适用于迭代执行时间均匀的场景)启动前将数据均分(比如1000个迭代,4核CPU拆成4块,每块250个),优点是分区开销小,缺点是如果某块迭代执行慢(比如 处理大数据),会导致有的线程闲、有的线程忙(负载不均)-动态分区(Parallel默认策略)不提前均分,而是按需分配小批次(比如每次分配10~20个迭代为一个小块),线程处理完当前小块后,立刻去领取下一 个小块,直到所有数据处理完 ✅优势:解决负载不均问题(比如某块迭代执行慢,其他线程不会等,继续领新块),最大化CPU利用率 b.线程调度 —— 复用线程池,而非创建新线程 Parallel循环不会为每个块创建新线程,而是复用.NET线程池(ThreadPool)的工作线程 线程池默认有最小线程数( CPU 核心数)和最大线程数(默认 1023),Parallel会向线程池请求线程,而非手动创建(避 免线程创建/销毁的昂贵开销)并行度(同时运行的线程数)默认由.NET根据CPU核心数、当前系统负载动态调整c.执行与线程复用 —— 一个线程处理多个块 线程与块不是一一绑定,一个线程处理完一个小块后,不会销毁,而是立刻从分区器领取下一个小块继续执行;直到所有小块 处理完毕,线程才会回到线程池,等待后续复用 d.收尾 —— 合并结果(如有)处理异常-若有共享结果(比如累加求和),需通过原子操作/锁-若多个块抛出异常,会封装为AggregateException统一抛出3.并行循环中的异常处理并行循环中的异常不会立即停止本次迭代,而是停止新的迭代;将trycatch放在并行循环的外面usingSystem;usingSystem.Threading.Tasks;classParallelExceptionBasic{staticvoidMain(){try{// 并行循环迭代1和3抛出不同异常Parallel.For(0,5,i{Console.WriteLine($迭代{i}开始执行);if(i1)thrownewArgumentException($参数非法迭代{i});// 业务异常1if(i3)thrownewDivideByZeroException($除零错误迭代{i});// 业务异常2Thread.Sleep(100);// 模拟业务逻辑});}// 必须捕获AggregateException而非单个异常catch(AggregateExceptionaggregateEx){Console.WriteLine($捕获到{aggregateEx.InnerExceptions.Count}个异常);// 遍历所有内部异常逐个处理foreach(varinnerExinaggregateEx.InnerExceptions){// 区分异常类型针对性处理switch(innerEx){caseArgumentExceptionargEx:Console.WriteLine($参数异常{argEx.Message});break;caseDivideByZeroExceptiondivEx:Console.WriteLine($除零异常{divEx.Message});break;default:Console.WriteLine($未知异常{innerEx.Message});break;}}}// 可选捕获其他非并行循环的异常比如参数错误catch(Exceptionex){Console.WriteLine($非聚合异常{ex.Message});}}}4.停止Stop是紧急停止—— 不管索引顺序,新迭代全不调度,已开始的迭代也建议尽快退出(而非执行完)usingSystem;usingSystem.Threading.Tasks;classParallelBreakVsStop{staticvoidMain(){Console.WriteLine( 测试 Stop() );varresultParallel.For(0,10,(i,state){Console.WriteLine($[{DateTime.Now:HH:mm:ss.fff}] 迭代{i}开始执行);if(i5){Console.WriteLine($[{DateTime.Now:HH:mm:ss.fff}] 触发 Stop());state.Stop();}// 关键检查IsStopped尽快退出Stop的核心if(state.IsStopped){Console.WriteLine($[{DateTime.Now:HH:mm:ss.fff}] 迭代{i}检测到Stop立即退出);return;// 不执行后续的500ms延迟}// 若没检测IsStopped才会执行完500ms这是你觉得没区别的常见原因Task.Delay(500).Wait();Console.WriteLine($[{DateTime.Now:HH:mm:ss.fff}] 迭代{i}执行完成);});Console.WriteLine($循环是否完成{result.IsCompleted});Console.WriteLine($最低中断迭代索引{result.LowestBreakIteration??-1}\n);}}5.中断Break是有序中断—— 保证中断点前的迭代全执行完,只停后面的usingSystem;usingSystem.Threading.Tasks;classParallelBreakVsStop{staticvoidMain(){Console.WriteLine( 测试 Break() );varresultParallel.For(0,10,(i,state){Console.WriteLine($[{DateTime.Now:HH:mm:ss.fff}] 迭代{i}开始执行);if(i5){Console.WriteLine($[{DateTime.Now:HH:mm:ss.fff}] 触发 Break());state.Break();}// 模拟耗时500ms的业务逻辑Break下会执行完Task.Delay(500).Wait();Console.WriteLine($[{DateTime.Now:HH:mm:ss.fff}] 迭代{i}执行完成);});Console.WriteLine($循环是否完成{result.IsCompleted});Console.WriteLine($最低中断迭代索引{result.LowestBreakIteration}\n);}}
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

网站的色彩湖南 微网站开发与设计比赛

第一章:云Agent访问失控的根源剖析在现代云原生架构中,云Agent作为连接计算实例与管理控制平面的核心组件,承担着配置下发、状态上报和远程执行等关键职责。然而,随着微服务规模扩张和跨云部署的普及,云Agent的访问权限…

张小明 2026/1/9 7:04:44 网站建设

沈阳seo网站管理如何做网站广告图片

如何快速实现Layui多选下拉框?formSelects完整使用指南 【免费下载链接】layui-formSelects Layui select多选小插件 项目地址: https://gitcode.com/gh_mirrors/la/layui-formSelects layui-formSelects是一款专为Layui框架设计的高效多选解决方案&#xff…

张小明 2025/12/25 11:45:45 网站建设

为什么学网站开发专业北京翻译公司

为什么越来越多人选择 mixomi 海豹油作为长期 Omega-3 补充方案在众多 Omega-3 营养补充剂中,鱼油和海豹油无疑是被讨论最多的两种。鱼油长期占据主流,而近年来,含有 DPA 的海豹油,正逐渐成为关注“吸收效率”和“结构完整性”人群…

张小明 2025/12/26 2:42:07 网站建设

做百度药材种苗网站在哪里查公司名字有没有注册

如何高效掌控演讲时间?这款免费PPT计时器让你告别超时尴尬! 【免费下载链接】ppttimer 一个简易的 PPT 计时器 项目地址: https://gitcode.com/gh_mirrors/pp/ppttimer 你是否曾经在重要演讲中因为时间把控不当而陷入尴尬?&#x1f3a…

张小明 2026/1/2 13:07:45 网站建设

先看网站案例您的网站也可以这么做18+网站推广

案例目标本案例展示了如何使用LangChain和LangGraph Studio构建一个多智能体工作流系统,用于研究特定人物、职业背景、所属公司,并生成后续问题或面试提示。该系统通过多个专门的智能体协同工作,实现从信息收集、分析到问题生成的完整流程&am…

张小明 2025/12/27 5:31:20 网站建设

ico 众筹网站开发wordpress排版界面

AI绘画参数调优实战手册:三大维度精准控制生成效果 【免费下载链接】IF 项目地址: https://gitcode.com/gh_mirrors/if/IF 你是否经历过这样的困扰:使用相同的AI绘画模型,别人能产出惊艳的艺术作品,而你的生成结果却总是差…

张小明 2025/12/26 21:50:13 网站建设