散分帖:高级线程池模型 ThreadPro V1.0 源码下载(200分)

  • 主题发起人 主题发起人 99koo
  • 开始时间 开始时间
9

99koo

Unregistered / Unconfirmed
GUEST, unregistred user!
说到多线程,一直是编程中的一个难题,关键问题就是很难调试。每个线程的执行时间是由CPU随机分配的,你无法预料一个确定的结果。想象一下有数万个相同的任务需要执行,这里我们打个比方,比如你有一个代理列表文本文件 一行一个代理,格式IP:PORT,有1万行,你也许接触过一些代理验证软件,在软件里你可以很方便的设置并行线程数,然后点开始,就会以非常高的效率,以多线程的方式对你所导入的代理进行测试,直到最后一个代理验证完毕(每一时刻,有固定数量的线程在运行),我所说的就是这种模型。
这个模型是SPIDER程序的基础,网络蜘蛛(数据挖掘)程序就是一种基于深度的并行线程池,许多专业的营销类软件也是使用这种线程池模型来进行群发。
本人基于DELPHI的TThread封装了更实用,更结构化的TThreadTask线程类。并且写了一个线程池类TThreadPool 它是 TThreadTask 的容器,其中运用了面向对象的方法,使用了继承和多态,实现了一个可设置并发任务数的线程池。继承这些基类你可以编写任意自定义的基于这种模型的应用,让你的程序具有强大而安全的多线程处理能力! 本人还额外封装了一个 THTTPtask 类,该类是基于INDY进一步封装而成,并使用了一个第3方的压缩处理库,使 THTTPtask 如同浏览器那样,完全支持 GZIP,使你编写 HTTP 多线程程序变的非常容易!

本DEMO是一个简单的代理验证程序,其中 ThreadTask.pas, ThreadPool.Pas, HTTPtask.pas 分别封装了上面所说的3个类。使用方法:

1> 新建一个单元从THTTPtask继承编写你自己的HTTP线程类,如DEMO中的 MyThreadTask.pas
2> 新建一个单元从TThreadPool继承编写你自己的线程池类,如DEMO中的 MyThreadPool.pas(只需要覆盖基类中的一个SetThread方法就可以了!)
3> 线程池任务列表的装载,以及线程池的控制(开始,暂停,继续,停止),请参看DEMO中Main.pas的代码。
源码下载
http://www.flying99koo.com/blog/read.php?32
http://www.delphibox.com/article.asp?articleid=3454
 
非常感谢,非常实用啊
顺便领分
 
好人
谢谢
 
不错的~~
 
控件只有支持d7及以下版本,不爽。
 
在lvkZlib单元中缺少c_rtl
 
看看先[:D]
 
不错,想法很好
 
编译时提示:
[Fatal Error] lvkZLib.pas(136): File not found: 'c_rtl.dcu'
 
fadey 你先下载 LVK 3方组件并安装
 
多人接受答案了。
 
后退
顶部