Community Server-->多线程管理池

这部分包括3部分:

CommunityComponents.Semaphore       检测类。

CommunityComponents.ManagedThreadPool         线程管理池。

CommunityComponents.WaitingCallback 等待回调的对象

1.1    检测类 

此类主要监控系统资源中多线程的锁定以及释放。

P():锁定当前对象,并阻塞当前线程为无限等待时间,并置变量count――。

V():锁定当前对象,并通知等待队列中的线程锁定对象状态的更改,以唤醒其开始工作,并置变量count++

Count:记录当前队列等待回调的对象的个数。

1.2    线程管理池

常量定义_maxWorkerThreads默认为5,构造函数时从配置文件中取得最大工作线程数。

static Queue _waitingCallbacks;当前队列等待回调的对象

static Semaphore _workerThreadNeeded;用符号表示一个工作线程将用于处理此对象工作,同时可能存在并发多个工作线程。

static ArrayList _workerThreads;当前线程池中的所有线程。

static int _inUseThreads;当前使用的线程数。

static ManagedThreadPool():初始化最大线程数,并开启最大线程数相应的线程,并置之为后台线程处理,每台线程委托相应的任务ProcessQueuedItems

ProcessQueuedItems():从队列waitingCallbacks中取出一对象执行回调同时置当前使用的线程数inUseThreads加一,当此方法执行完毕时执行finally方法置当前使用的线程数inUseThreads减一。

QueueUserWorkItem() :将WaitCallback工作对象放入队列Queue中,并置workerThreadNeeded调用V()方法。

EmptyQueue():清除所有waitingCallbacks中的对象并重置workerThreadNeeded0

 

1.3    等待回调的对象 

此类表示线程池线程执行回调时返回当前对象。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值