uThreadPool.pas 线程池示例 DEMO 修正资源死锁

时间:2017-10-29 03:43:59
【文件属性】:

文件名称:uThreadPool.pas 线程池示例 DEMO 修正资源死锁

文件大小:595KB

文件格式:ZIP

更新时间:2017-10-29 03:43:59

uThreadPool 线程池示例 DEMO 修正资源死锁

DEMO程序必须重新编译运行才能修正原资源死锁问题 取自卢伟的专栏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;


【文件预览】:
线程池D7
----ThreadPoolDemo.ddp(51B)
----ThreadPool.res(90KB)
----__history()
--------ThreadPoolDemo.dfm.~60~(5KB)
--------ThreadPoolDemo.dfm.~64~(5KB)
--------ThreadPoolDemo.dfm.~61~(5KB)
--------uThreadPool.pas.~168~(27KB)
--------uThreadPool.pas.~164~(27KB)
--------uThreadPool.pas.~171~(27KB)
--------uMainForm.pas.~2~(2KB)
--------ThreadPool.dpr.~1~(274B)
--------uMainForm.pas.~1~(2KB)
--------ThreadPoolDemo.pas.~203~(5KB)
--------uThreadPool.pas.~169~(27KB)
--------uMainForm.dfm.~3~(1KB)
--------uThreadPool.pas.~163~(27KB)
--------ThreadPoolDemo.dfm.~65~(5KB)
--------ThreadPoolDemo.dfm.~59~(5KB)
--------U_ThreadPools.pas.~2~(7KB)
--------uThreadPool.pas.~167~(27KB)
--------ThreadPoolDemo.dfm.~63~(5KB)
--------ThreadPoolDemo.pas.~198~(5KB)
--------ThreadPoolDemo.pas.~202~(5KB)
--------ThreadPoolDemo.dfm.~58~(5KB)
--------ThreadPoolDemo.dfm.~66~(5KB)
--------uMainForm.dfm.~1~(1KB)
--------uThreadPool.pas.~162~(27KB)
--------ThreadPoolDemo.pas.~201~(5KB)
--------uThreadPool.pas.~166~(27KB)
--------ThreadPoolDemo.pas.~204~(5KB)
--------ThreadPoolDemo.pas.~196~(5KB)
--------uThreadPool.pas.~165~(27KB)
--------ThreadPoolDemo.pas.~200~(5KB)
--------uThreadPool.pas.~170~(27KB)
--------ThreadPool.dpr.~2~(257B)
--------uMainForm.pas.~3~(2KB)
--------ThreadPoolDemo.dfm.~62~(5KB)
--------uMainForm.dfm.~2~(1KB)
--------ThreadPoolDemo.pas.~197~(5KB)
--------U_ThreadPools.pas.~1~(7KB)
--------ThreadPoolDemo.pas.~199~(5KB)
--------ThreadPoolDemo.pas.~205~(5KB)
--------ThreadPoolDemo.dfm.~67~(5KB)
--------uMainForm.dfm.~4~(2KB)
----ThreadPoolDemo.pas(5KB)
----ThreadPool.exe(501KB)
----ThreadPool.cfg(439B)
----ThreadPool.dof(17KB)
----ThreadPool.dproj.local(2KB)
----ThreadPoolDemo.dcu(9KB)
----uThreadPool.pas(28KB)
----ThreadPool.identcache(189B)
----uThreadPool.dcu(21KB)
----ThreadPoolDemo.dfm(4KB)
----ThreadPool.map(328KB)
----ThreadPool.drc(21KB)
----ThreadPool.dpr(264B)
----ThreadPool.dproj(6KB)

网友评论

  • 测试可用。
  • 有时会死 机
  • 好的版本,不知哪个最新的
  • 只能学习,实际用不上。
  • 下载试过了,可以用的,我用的版本是d6的
  • 学习,并写自己理解的pool
  • 用于学习不错~~~实际生产并不能用