前几天需要使用一个多线程来完成工作,情况如下:
有一个列表,有N个任务,现在需要M个线程去实现它,不懂代码,没有办法完成,找同事完成了。
执行的过程如下
1、生成N个任务的队列(此队列为基类List,被封装过,提供一个GetNext方法)
2、生成M个线程的数组(线程是经过封装的)
3、启动各个线程,
4、某一个线程完成,通知主线程完成了,并去调用队列的GetNext方法,获取下一个任务,直到所有的完成。GetNext方法有Lock,防止任务分配重复。
5、运行的过程当中,可以调用队列的Add方法,动态增加任务。目前代码中没有写减少任务,加上去是非常简单的。
6、目前没有做的,就是动态增减线程的数量,但也不难,比如给封装过的线程增加Remove方法,在线程内部从最后一个线程往前遍历,需要停止几个就Stop几个。
7、此方法比较适合队列管理的情况,比如像下载软件flashget,迅雷等
8、顺便BS一下很多写blog的人,受中国应试教育的影响,很多是把理论搬上来,不知道想表达什么,cnblogs是该需要分成几块了,资料,心得,论坛,该去哪里去哪里,不免一些人说首页发的文章,自己想看的太少了。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!