转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 软件开发 >> Delphi程序 >> 正文
在DELPHI中用线程排序         ★★★★

在DELPHI中用线程排序

作者:闵涛 文章来源:闵涛的学习笔记 点击数:583 更新时间:2009/4/23 18:26:04
 

    在数据处理量很大的情况下,如何在数据处理的同时响应用户操作?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为一实际的数组。这样就可以用线程实现排序,在排序过程中,用户不必等到排序结束就可以执行其它操作。这种用多线程实时响应用户操作方法在涉及大量数据处理的应用程序中显得尤为重要。


没有相关教程
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · C语言系列  · VB.NET程序
    · JAVA开发  · Delphi程序
    · 脚本语言
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台