小隐的博客

人生在世,笑饮一生
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

多任务多线程(队列)示例代码

Posted on 2009-07-17 11:43  隐客  阅读(4650)  评论(27编辑  收藏  举报

前几天需要使用一个多线程来完成工作,情况如下:

有一个列表,有N个任务,现在需要M个线程去实现它,不懂代码,没有办法完成,找同事完成了。

执行的过程如下

1、生成N个任务的队列(此队列为基类List,被封装过,提供一个GetNext方法)

2、生成M个线程的数组(线程是经过封装的)

3、启动各个线程,

4、某一个线程完成,通知主线程完成了,并去调用队列的GetNext方法,获取下一个任务,直到所有的完成。GetNext方法有Lock,防止任务分配重复。

5、运行的过程当中,可以调用队列的Add方法,动态增加任务。目前代码中没有写减少任务,加上去是非常简单的。

6、目前没有做的,就是动态增减线程的数量,但也不难,比如给封装过的线程增加Remove方法,在线程内部从最后一个线程往前遍历,需要停止几个就Stop几个。

7、此方法比较适合队列管理的情况,比如像下载软件flashget,迅雷等

8、顺便BS一下很多写blog的人,受中国应试教育的影响,很多是把理论搬上来,不知道想表达什么,cnblogs是该需要分成几块了,资料,心得,论坛,该去哪里去哪里,不免一些人说首页发的文章,自己想看的太少了。

 

/Files/szyicol/ThreadDemo.rar

QQ交流