6 自定义线程池(线程应用程序的伸缩)

特殊说明:这个例子不是【C#线程参考手册】的例子,书中的例子对于我来说有些复杂。

               在网上找到了一个自定义线程池的例子来代替书中的例子。

               原著位置:http://www.cnblogs.com/Alexander-Lee/archive/2009/10/31/1593647.html

 

 

1 自定义线程池设计概要说明:

1 TaskPool类(自定义线程池类)

    1.1 任务线程在线程队列间切换的顺序

        1  定义:private Dictionary<string, Task> Publicpool

    说明:所有线程

    执行:构造函数初始化线程实例时追加;AddTaskItem内,空闲线程(freequeue)不存在时追加

 

2  定义:private Queue<Task> freequeue

    说明:空闲线程队列

    执行:构造函数内,初始化线程实例时追加;AddTaskItem内,空闲线程(freequeue)不存在时追加

 

3  定义:private Dictionary<string, Task> working

    说明:正在工作的线程

    执行:AddTaskItem方法内,工作线程追加到working队列内,然后执行工作线程。

 

4  定义:private Queue<Waititem> waitlist

    说明:等待执行工作队列

    执行:AddTaskItem方法内,当前线程数=最大线程数时,waitlist队列内工作线程追加。

             当每个工作线程结束时,触发WorkComplete事件,【等待执行工作队列】内的工作线程追加到工作的线程队列内。

            1.2 工作线程追加到ThreadPool内的方法:

                   AddTaskItem

 

        2  Task类(线程任务包装类)通过Task构造函数和Active方法来执行working工作线程上的线程。

        3 Waititem类(等待队列保存任务方法和任务方法参数的信息)

 

 

 

2 类图如下:

         类图

      

 

3 代码如下:

   TashPool类 (自定义线程池容器类)

 

   Task类 (工作线程包装类)

 

  WaitItem类(等待线程队列包装类)

 

   客户端执行

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值