前几天需要使用一个多线程来完成工作,情况如下:
有一个列表,有N个任务,现在需要M个线程去实现它,不懂代码,没有办法完成,找同事完成了。
执行的过程如下
1、生成N个任务的队列(此队列为基类List,被封装过,提供一个GetNext方法)
2、生成M个线程的数组(线程是经过封装的)
3、启动各个线程,
4、某一个线程完成,通知主线程完成了,并去调用队列的GetNext方法,获取下一个任务,直到所有的完成。GetNext方法有Lock,防止任务分配重复。
5、运行的过程当中,可以调用队列的Add方法,动态增加任务。目前代码中没有写减少任务,加上去是非常简单的。
6、目前没有做的,就是动态增减线程的数量,但也不难,比如给封装过的线程增加Remove方法,在线程内部从最后一个线程往前遍历,需要停止几个就Stop几个。
7、此方法比较适合队列管理的情况,比如像下载软件flashget,迅雷等
8、顺便BS一下很多写blog的人,受中国应试教育的影响,很多是把理论搬上来,不知道想表达什么,cnblogs是该需要分成几块了,资料,心得,论坛,该去哪里去哪里,不免一些人说首页发的文章,自己想看的太少了。