说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

在DELPHI中用线程排序

HTML文档下载 WORD文档下载 PDF文档下载
在DELPHI中用线程排序

在数据处理量很大的情况下,如何在数据处理的同时响应用户操作?Windows95/98和WindowsNT作为多线程的多任务操作系统,其调度单元是线程,即线程是系统分配处理器时间资源的基本单元,所以我们可以利用线程实现在处理大批量数据的同时响应用户操作。

DELPHI作为一个优秀的开发平台,对开发多线程应用程序提供了强有力的支持,即可直接利用32位Windows环境提供的Win32API接口函数CreateThread,也可利用DELPHI中提供的BeginThread函数。在下面例子中,正是使用了DELPHI提供的TThread类。

一.基本的方法如下:

1.从Tthread类派生一个新类。(创建TSortThread类)

2.定义新类的Create方法。

3.定义新类的Execute方法,并在Execute方法中插入线程运行时执行的代码。

4.引用类方法创建实例。

二.例子的详细代码及说明:

首先,新建一个单元,保存为mysort.pas.在此单元中,我们创建了一个TSortThread类,它从TThread类中继承而来,所以当我们在程序中创建这个类的一个实例时,也就是创建了一个新的线程。

接着,在该类中定义一个Sort方法,用来对数组进行排序,同时TSortThread类超越了TThread类的构造方法Create和Execute,在execute方法中,调用了对数组进行排序的Sort方法。具体代码如下:

unitmysort;

interface

usesClasses;//TThread类在Classes中被定义。

type

PSortArray=TSortArray;

TSortArray=array.[0..MaxIntdivSize

Of(Integer)-1]ofInteger;

{此处定义了TsortThread类}

TSortThread=class(TThread)

Private

{在TSortThread类中定义了如下几个私有变元}

FSortArray:PSortArray;

FSize:Integer;

FA

FB

FI

FJ:Integer;

Protected

{类TSortThread超越了类Tthread的Execute方法}

procedure Execute;override;

{类TsortThread添加了一个Sort方法}

procedure Sort(varA:arrayofInteger);

public

{类TSortThread超越了类Tthread的构造方法}

constructorCreate(varSortArray:arrayofInteger);

end;

implementation

constructorTSortThread.Create(varSortArray:arrayofInteger);

begin

FSortArray:=@SortArray;

FSize:=High(SortArray)-Low(SortArray)+1;

FreeOn Terminate:=True;

inheritedCreate(False);

end;

{当线程开始时,Execute方法将被调用。}

procedure TSortThread.Execu

te;

begin

Sort(Slice(FSortArray

FSize));

end;

{下面实现了冒泡法排序}

procedure TSortThread.Sort(varA:arrayofInteger);

var

I

J

T:Integer;

begin

for I:=High(A)downto Low(A) do

for J:=Low(A)to High(A)-1 do

if A[J]>A[J+1] then

begin

T:=A[J];

A[J]:=A[J+1];

A[J+1]:=T;

if Terminated then Exit;

end;

end;

end

最后,在用户应用程序的implementation处加入usesmysort

在执行排序的地方加入TQuickSortthread.Create(SortArray),其中SortArray为一实际的数组。这样就可以用线程实现排序,在排序过程中,用户不必等到排序结束就可以执行其它操作。这种用多线程实时响应用户操作方法在涉及大量数据处理的应用程序中显得尤为重要。

证据显示:Linux战争已经转移到OpenStack RestKit:iOS开发必备,告别众多无聊代码 技术新突破:手机和平板可远程控制PC,Chrome Remote Desktop亮相 物联网高速公路上,快数据如何驱动分析 苹果或将使用雅虎的搜索引擎,抛弃谷歌 百万用户规模的系统如何扩展 大数据需要软件定义存储 倒计36小时!2014中国Spark技术峰会即将召开! 设计师专宠,Startup强大的UI设计框架 走进金山云:从技术走向服务 Qt Creator 3.1.0发布,全面支持iOS、Android、WP Google大中华区总裁石博盟与中国大学生畅谈科技与创新 阿里云:从防到攻,深入浅出DDoS 大数据处理分析的六大最好工具 微软:Windows Phone开发者可回复用户评价 不断缩水后的微博上市首日大涨19% 曾一度涨超40% Snapdragon LLVM编译器全新升级 支持骁龙64位处理器 EDP:基于Node.JS与NPM的企业级开发平台 想改变世界,先改变自己——知名Hacker、发明家Mitch Altman专访 《近匠》iHealth,健康大数据助力硬件“破壳” 一周消息树:如何做到每天写代码? 一周热点:微软SQL Server 2014三大新特性 《Make》创始人Dale Dougherty:全民创客 DevOps正在扼杀程序员? OpenStack新版本:新增近350个功能,修复Bug超2900个 【走近讲师】易欢欢:数据对接和后台是互联网金融的技术最难点 最火HTML5 JavaScript游戏引擎:国外篇(二) 挑战最强大脑——来自全球的14个编码社区 摩尔定律让位于贝索斯定律 InPaaS:新一代云计算应用平台 【技术博客推荐】樊哲谈机器学习算法与Mahout 在VisData中正常通过但在程序中不能通过,为什么 向各位高手请教两句:tab_1.post selecttab(3) 的作用是不是向tab发送消息,消息内容是selecttab(3)?yield()是不是从消息中查找是否有相同消息,如果有则将它拿出执行? 我很莱,谁能给我简单的解释一下线程是什么?脱壳是什么? 图象资料,轻而易举30分! 和大家交流一下泛型化编程 文件拷贝的简单问题, 大家好:请问:access的mdb数据库如何编程知道里面含有那几个表? 怎样将mysql驱动加到jbuilder中,让Database pilot能认得出,高分相送 高分求教:关于ADO实现数据库!!!!!!!!!!谢谢 请问如何一次删除数据库中的所有数据? 怎么使label框透明!帮帮我! TNMUDP问题:怎样才能知道RemoteHost连接失败??? 谁有CuteFTP Pro2.0注册码?谢谢 如何进行DropDownList绑定,谢谢! 请问一个CString的问题 那个168查分台太可恶了 WIN98与WIN2000共享一个OFFICE??? 网络连接怎么检测 能把IE浏览器最大吗?俺指的是把右上最大按钮最大化? 怎么判断表单传送的整数中不能有字符,谢谢!!! 如何把我写好的说明书放到我VC++应用程序的帮助文件中? 求最容易理解,最容易上手的数据库书籍,各位老大请指教,谢谢!! 快!快快!!来拿分呀!!!!!!!!一个简单问题。 WIN98与WIN2000共享一个OFFICE 2000??? 在Servlet中如何使用JavaBean(调用其中的方法)?主要是格式!如果网上有这方面的资料也可以告诉我,我急用,不胜感激!40分送上!(只有这些了) 请问各位:怎样才能知道某一个进程所占用的cpu比例,mem大小? 请问在恢复sql 7.0一个数据库文件时,出现Error 3624:这是什么意思?? 关于程序员考试 哪位知道怎么一行一行地读取文本文件呀!!!! 谁知道的,来帮我一下——有关网页浏览计时的问题 如何将数字变为字符串格式化输出? Websphere下使用连接池的一些问题 TNMUDP问题:怎样才能知道RemoteHost连接失败 ? 算法请教,我要调整一副黑白数字图的浓度,我是用直方图的方法好呢,还是先转成HLS在转回来好?若都不对,应该怎么做? 如何 在ASP中用ping 一个小问题 请用javascript VC++6是98年才出来的,为什么没有最新的ADO原生驱动,而通过ODBC的话速度太慢; 多媒体 谁有MPEG-4的资料! 如何实现类似资源管理器的分隔条 我是菜鸟,请教各位GG,MM?????? 我的计算字段怎么老要计算,而且经常有死循环,到底该注意些什么,在哪里控制? 如何取消鼠标右键菜单和使shift功能键无效?(紧急) 一个非常非常简单的一个问题 如何安装Jbuilder 5.0 ? 多媒体技术 chr(176)有什么用? 如何将3DMAX图片在vb窗口中显示 各位大侠,怎样取得复合数据窗口里面的嵌套表的Label名。 一个关于访问数据库很菜的问题 请教小波分解与重构,模极大值算法。 克服摩擦力做的功指的是总动力做的功吗,还是只是摩擦力做功的相反数 传送带上的克服摩擦力做功怎么算?是摩擦力乘以A物块与传送带的相对位移还是B物块的位移还是C传送带的位移?传送带与物块初速度是相反的 急:天津到济南的铁路长357千米,一列快车从天津开出,同时一列慢车从济南开出,两车相向而行,经...急:天津到济南的铁路长357千米,一列快车从天津开出,同时一列慢车从济南开出,两车相向而行, 电热水壶怎样烧水 为什么自行车的主动轮和从动轮的摩擦力分别作为动力和阻力?这和滚动摩擦还有滑动摩擦有关系吗?如果有的话滚动摩擦和滑动摩擦又分别是什么呢? 青岛到济南共380千米,客车、货车,两车相向而行,客车每小时行55千米,货车行45千米,经过几小时相遇? 一列慢车从某站出发,每小时行48km,过了一段时间,一列快车从相同站出发与慢车同向而行每小时行72km,又经过1.5小时追上慢车,快车开出前,慢车已经行了多长时间? 关于驱动轮和从动轮所受摩擦力的方向的问题.为什么俩个轮所受摩擦力的方向会不同? 甲到乙的铁路长358千米.一列客车和一列货车同时从两地相向而行,2小时够途中相遇,已知客车每小时比货车行31千米,货车每小时行多少千米.用方程解啊 甲乙两站的路成为360km,一列慢车从甲站开出,每小时行驶48km,一列快车从乙站开出,每小时72km,快车快车先开25分钟,俩车相向而行,慢车行驶了多少时间相遇? 摩擦力 皮带主动轮 从动轮是皮带带动轮转,还是轮带动皮带转?哪个先转?怎样判断主动轮,从动轮,或皮带上一点的摩擦力的方向?还有,比如,C、D分别是两轮边缘与皮带接触的点,那C,D到底在皮带 有一列车和一列货车同时从相距630km的两起相向而行,经过4.2小时两列火车在途中相遇.已知客车每小时行80km货车每小时行多少千米? 甲乙两个车站相距168km,一列慢车从甲站开出,速度为36km/小时,一列快车从乙站开出,速度为48km/小时.慢车先开1小时,相向而行,快车开几小时后与慢车相遇?(列方程) 皮带上的点和主动轮与从动轮的上点所受的摩擦力有什么不同? 我家的电水壶上的电阻丝生锈了 还能又来烧水吗 烧的水能喝吗铁锈会溶在水中吗,该怎么办 A,B两地相距240KM,慢车从B地开出,每小时速度48KM,快车从A地开出,每小时速度72KM,若两列车同向快车在慢车的后面,慢车先开30分钟,慢车开出几小时后快车追上慢车? 客车以72km/h行驶,与它平行行驶的货车长度300m.客车上的人见货车从他眼前经过用10秒,货车匀速行驶速度 我家有个电水壶就是直接插上插头就可以烧水那种.我发现里面的那加热器具已经生锈了.还能用吗我怕水和生锈的加热器接触加热不会很脏吗 甲乙两站相距360km,一列慢车从甲站开出,每小时行48km,一列快车从乙站出发,每小时行72km,慢车先行25分钟两车相向而行,慢车开出几小时后与快车相遇?(用方程解,快啊) 一辆长12m的客车以72km/h的速度匀速行驶,突然迎面开来一辆长200m的货车,以10m/s的速度匀速向后驶去,那么坐在窗口的乘客看见货车从他眼前驶过的时间为? 电热水壶生锈后烧的水可以喝吗?我家电热水壶使用近一年了,很早的时候就发现里面的电热棒生锈,但一直在用.期间用醋啊牙膏类清洗过,不能完全洗干净,而且很快又看上去锈迹斑斑的.主要是 为什么电水壶烧水那么快 一主动轮通过皮带带动从动轮运动,主动轮顺时针运动,则主动轮上点M与从动轮点N的摩擦力方向为注:两轮呈水平放置,主动轮在左,从动轮在右,M为主动轮上最左边一点,N为从动轮上最右边一点 克服摩擦力做的功 和 摩擦力做的功 自己不清楚的不要乱回答 物体克服摩擦力做功与 摩擦力对物体做功有什么区 电水壶里没放水就直接插电炒水了,里面的发热管发黑了,继续用这样的发热管烧水,会不会使烧出来的水有毒呀? 北京和呼和浩特之间的铁路全长660千米,一列客车和一列货车同时从两地出发相向而行途中火车因让道停了0.5小时,结果客车6小时后与货车在途中相遇.一直客车的速度是每小时66千米,求货车的 一列长200m的火车穿过一个长1000m的隧道用了两分钟,则该火车的速度多大? 一列货车以6m/s的速度在平直铁路上运动,由于调度失误,在它后面120m处有一列客车20m/s的速度向它靠近...一列货车以6m/s的速度在平直铁路上运动,由于调度失误,在它后面120m处有一列客车20m/s的 货车以30千米一小时的速度从车站开出3小时后,一辆摩托车以50千米一小时的速度沿货车行驶的路线,几小时能 摩擦力属于阻力吗? 客车以20m/s的速度行驶,突然发现同轨前方120m处有一货车正以6m/s的速度匀速前进.于是客车紧急刹车,以0.8m/s“的加速度匀减速运动,试判断两车是否相撞 货车以30千米1时的速度从车站开出3小时后,一辆摩托车以50千米1小时的速度沿货车行驶路线追去,则几小时可以追上货车?及及及! 阻力和摩擦力一样么若一辆车匀速直线运动,则摩擦力与牵引力相等 ,那摩擦力与阻力相等吗?Why 新买的快速不锈钢电热水壶烧水都有味道,怎么回事?喝这些水对身 一辆摩托车追赶它前面相距120km并以50千米一小时的速度行驶的卡车,摩托车追了3小时才追上,求摩托车速度 下列货车以28.8km/h的速度在铁路上运行,由于调事故,在后面700米出有一列快车以72km/h的速度在行驶,快车司机发觉后立即合上制动器,但快车要滑行2000米才停下(1)两车会相撞吗,说明理由(2) 没有松香,请问焊锡膏能增加电机和皮带传送的摩擦力吗?洗衣机的皮带打滑了,百度了下,摸松香能够增加摩擦力.可是家里没有松香,突然想起电焊的时候摸松香和焊锡膏都可以,两者貌似成分相 一辆汽车以48千米每小时的速度做均匀直线运动.半小时后,一辆摩托车从车站出发去追汽车,经1小时30分追上,求摩托车的速度 用电水壶烧水电线发热正常吗? 皮带轮是增大摩擦力还是减小摩擦力,为什么? 工程塑料做的电热水壶烧水会不会有毒啊我在淘宝上买的,还有一种是不锈钢材料的, 物体的拉力是不是始终等于滑动摩擦力 C增大摩擦力 D减小摩擦力请仔细说明理由谢谢了.同一辆汽车能够输出的最大功率是有限的,故在输出功率不能增加的情况下,为了增大牵引力以利于爬坡,一般汽车的方法是()A减小速度 C增大 求初中物理帝或者物理老师给我解答一题关于斜面上克服摩擦力做的功的问题.对这方面很了解有把握解答问题的就家窝扣,1736240867 静摩擦力是否等于拉力 滑动摩擦力是否等于最大静摩擦力是不是拉力一定要大于最大静摩擦力才可以生成滑动摩擦 摩擦力减小能加快速度,摩擦力加大能加快速度吗? 一辆卡车在水平公路上以15m/s的速度匀速行驶.司机因事故突然紧急刹车.已知刹车时加速度的大小是7.5m/s²,刹车过程所用的时间为多少s.如果要求它在急刹车后22.5m内停下来,它行驶的速度不 一列货车以28.8km/h的速度在铁路上运 行,由于调度事故,在后方700m处有一 列快车以72km/h的速度行驶,快车司机 发觉后立即合上制动器,但快车要滑行 2000m才能停下,试通过计算判断两车 是否会相 如图所示,传送带以 v的初速度匀速运动.将质量为m的物体无初速度放在传送带上的A端,物体将被传送带带到B端,已知物体到达B端之间已和传送带相对静止,则下列说法正确的是( )A.传送 一货车严重超载后的总质量为49t,以54km/h的速率匀速行驶.发现红灯时刹车,货车做匀减速直线运动,加速度的大小为2、5米每二次方秒,不超载时则为5米每二次方秒,求若前方无阻挡,问从刹车到停 为什么电热水壶烧水时声音很大? 传送带上的摩擦力做功是怎么算的?比如,有一传送带上有个木块和传送带一起运动,子弹把它打穿,并且木块的方向反向,在木块被打穿后,到再与传送带一起运动几秒钟,求传送带对外做的功和子 玻璃电水壶好还是不锈钢的好?价格如何?那个牌子比较好? 用电热水壶烧水是哪种变化?说一下为什么、、 传送带摩擦力做功问题传送带AB以恒速V=3M/S向右运动,AB长为3.8M,质量为m=5kg的物体,静止放到左端A处,同时用水平恒力F=25N向右拉物体,如物体与传送带间的滑动摩擦系数为0.25,求系统机械能的损 一旅客乘的货车每小时40千米速度前进,他看见迎面来的火车用了6秒时间从他身边驶过,已知迎面而来的火车长150米,求迎面来的火车的速度.请写出具体的解题思路 一列列车从20的速度在平直的轨道上运行时,发现前面180处有一货车正以6的速度同向行驶,快车立即合上制动器,一列列车20m/s的速度在平直的轨道上运行时,发现前面180m处有一货车正以6m/s的速 物体在传送带上摩擦力做功水平的传送带以速度V=6M/S的顺时针运转,两轮N,M间隔为L=10M,若在M轮的正上方,将一质量为M=3KG的物体轻放在传送带上,已知物体与传送带的动摩擦因数为0.3,在物 电水壶烧水已经烧开还要继续烧几分钟才可以喝?
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn