自定义线程池-c#的简单实现

自定义线程池-c#的简单实现,第1张

自定义线程池-c#的简单实现,第2张

它由两部分组成,一个线程管理类ThreadManager和一个线程类MyThread Test类,用于测试。

参考了以下信息:
http://tech.ccidnet.com/pub/disp/Article? columnID = 294 & articleID = 33440 & pageNO = 1
http://soft . yesky . com/soft channel/72342371961929728/2004 10 13/1863707 . shtml

下面是代码,希望大家能提出更好的建议:

1.线程管理器. cs

使用系统;

使用系统。穿线;

使用系统。收藏;

命名空间CustomThreadPool

{

///

///线程管理器,它将启动或唤醒一个线程来执行指定的回调方法。

///

公共类线程管理器

{

private static ArrayList threadList = new ArrayList();//线程列表,静态

//不允许创建实例

私有线程管理器()

{

}

///

///静态方法来启动或唤醒线程以执行指定的回调方法。

///

///委托实例

///传递给回调方法的参数

///没有可用线程时的等待时间(毫秒)。

///

公共静态bool QueueUserWorkItem(wait callback wait callback,Object obj,int timeOut)

{

//锁定共享资源,实现线程安全。

锁定(线程列表)

{

尝试

{

//如果线程列表为空,则填充线程列表。

if (threadList。计数== 0)

{

init threadlist();

}

长起始时间=日期时间。现在。滴答;

{

//遍历线程列表,找出可用的线程

foreach(threadList中的MyThread myThread)

{

//线程是空,所以需要创建一个线程。

如果(myThread。T == null)

{

流言蜚语。Start(waitCallback,obj,false);

返回true

}

else if (myThread。线程状态==线程状态。暂停)

{//线程挂起,唤醒线程。

流言蜚语。Start(waitCallback,obj,true);

返回true

}

}

//在线程休眠前释放锁

监视器。pulse all(thread list);

线程。睡眠(500);

}while(((日期时间。now . Ticks-start time)/10000)< time out);

}

最后

{

监视器。退出(thread list);

}

}

返回false

}

//用MyThread对象填充线程列表。请注意,此时线程没有启动。

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » 自定义线程池-c#的简单实现

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情