如何运用线程使程序同时做几件事?(200分)

  • 主题发起人 主题发起人 Thinboy
  • 开始时间 开始时间
T

Thinboy

Unregistered / Unconfirmed
GUEST, unregistred user!
如何运用线程使程序同时做几件事?
我找了很多的地方,都找不到教这方面东西的网页,
找到了一篇,但又看不懂!
组件嘛,找了几个,或是不能在D4中安装,或者
根本不能调来作为己用!
请哪位大哥说说吧!
谢谢!
 
DELPHI做线程其实是非常方便的.选New...,然后选Thread,将生成
一个继承自TThread的类,在这个类的Execute里面加入你的代码(这
个函数都已经生成了,只要找到位置加入就行了).再在需要执行这个
线程的地方创建一个这个类的对象就可以了.
基本步骤就这些,当然线程的理论很多,关于OS的,不是一句两句能说
清除的.
DELPHI也有个例子讲多线程的.看看应该可以明白.如果不明白,就需
要先补一下OS理论和数据结构的课了.
 
下面是一个最简单的县城应用,你可以把每件要做的事定义一个县城
当你同时按步骤3运行他们时,他们酒会如你所愿同时为你做事了
1.要用线程首先要从TThread抽象类中继承下来一个新类,如
type
TSendThread = class(TThread)
private
protected
procedure Execute;
override;
public
end;
2.然后告诉程序在县城执行时要干什么,如
procedure TSendThread.Execute;
begin
//...要干的事
end;
3.在要运行该线程时使用如下语句即可
tsendthread.Create(false);
 
从我做线程的几次经验来看,做线程并不是那么简单的事情,关键有几点要注意的是:
1、Delphi的VCL并不是线程安全的,也就是在线程中调用VCL的属性和方法,会
导致线程坏死;
2、线程的同步与互斥是非常讲究的技术问题。
3、线程之间的通讯及内存共享也要相当小心。
如果你刚刚入门,我建议你先找几本书看看,Delphi/demo/threads下有个例程你可
以看一下源代码。再自己试着做一些练习。
 
非常同意刘公子,线程确实不那么简单,不过在Delphi中已经相当方便了,关键是你要对各个线程之间的关系拎得清。
 
看看demos中的多线程排序的例子。
 
在Delphi 4中做多线程真是不简单,并非是在Execute方法中加入代码那么简单,
我看了Delphi4自带的例程,但是却找不到TBubbleSort等的定义在哪!
我自己试了一下,发觉要首先从TThread派生一个类,再由这个类派生出
第二种类,要多少个线程,就得有多少个第二种类;并非用实例来引用线程的!
究竟实情如何呢?
假想不知道要用到多少个线程,
最好可以同数组一样: MyThread:Array [1..xx] of TMyThread
可以么?
谢谢再次指教!
或者哪本书,哪个网页讲得详细?谢谢!
 
我想问的是:
如果想让多线程同时做好几件不同的事,该怎么做呢?
是不是得给每件事定义一个线程Execute?
 
你先继承生成一个新线程,就可以用此同一线程类, 在它的.EXECUTE中判断一下要做
什么事,然后调用相应的过程或函数即可.
 
多人接受答案了。
 
后退
顶部