求线程池demo

lc4148700 2009-03-26 04:57:26
取自卢伟的专栏DELPHI 线程池代码(http://blog.csdn.net/babyvspp/archive/2008/01/01/2008234.aspx),封装的十分完美,用法也非常简单,可以根据使用者设定的初始工作线程数和最大线程数以及线程执行时间自动增加工作线程。

此发布修改了原作者在线程池Free时的一点问题:“不能结束工作中的工作者线程(资源死锁)”。

用法:

// 创建线程池
FThreadPool := TThreadsPool.Create(Self); // 创建线程池
FThreadPool.ThreadsMin := 5; // 初始工作线程数
FThreadPool.ThreadsMax := 50; // 最大允许工作线程数
FThreadPool.OnProcessRequest := DealwithCommRecvData; // 线程工作函数(DealwithCommRecvData在工作者线程的Execute方法中被调用)


// 使用线程池
var
 AWorkItem: TRecvCommDataWorkItem; // 继承自TWorkItem
begin
 AWorkItem := TRecvCommDataWorkItem.Create;
 Move(PData[0], AWorkItem.FRecvData[0], PDataLen);
 AWorkItem.FRecvDataLen := PDataLen;
 FThreadPool.AddRequest(AWorkItem); // 向线程池分配一个任务
end;

初学Delphi线程池,请前辈给出一个最简单的线程池的demo。
用上面给出的单元也行,或者自己写出来的也行,只要能运行成功,哪怕是最简单的一个程序,如像memo中添加数字这种!
...全文
234 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
liangpei2008 2009-03-27
  • 打赏
  • 举报
回复
试试cnpack的threadpool
Bear_hx 2009-03-27
  • 打赏
  • 举报
回复
帮你找了一个,在DELPHI盒子上的,我没试过,你看一下,地址:http://www.2ccc.com/article.asp?articleid=3721
lc4148700 2009-03-26
  • 打赏
  • 举报
回复
这个是上面讲到的单元http://www.abcxd.com/delphi/abcxddelphi/delphiJQSQ/309.html

5,392

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧