线程中的execute是何时执行?(30分)

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

tswhoney

Unregistered / Unconfirmed
GUEST, unregistred user!
请看我的代码,请问execute过程何时执行?
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
ListBox1: TListBox;
procedure Button1Click(Sender: TObject);
private
procedure threadsdone(Sender:tobject);
{ Private declarations }
public
{ Public declarations }
end;
tfoothread=class(tthread)
protected
procedure execute;override;
end;

var
Form1: TForm1;
implementation
{$R *.dfm}
const
maxsize=128;
var
nextnumber:integer=0;
doneflags:integer=0;
globalarray:array[1..maxsize] of integer;
function getnextnumber:integer;
begin
result:=nextnumber;
inc(nextnumber);
end;

procedure tfoothread.execute;
var
i:integer;
begin
onterminate:=form1.threadsdone;
for i:=1 to maxsizedo
begin
globalarray:=getnextnumber;
sleep(5);
end;
end;

procedure tform1.threadsdone(sender:tobject);
var
i:integer;
begin
inc(doneflags);
ifdo
neflags=2 then
for i:=1 to maxsizedo
listbox1.Items.Add(inttostr(globalarray));
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
tfoothread.Create(false);
tfoothread.Create(false);
end;

end.
按钮中并没有调用,是如何调用execute?
 
要创建线程的实例
var
mythreed:tfoothread;
begin
mythreed:=tfoothread.create(false)
end;
 
这程序我好像见过啊???好像是讲互斥的一个例子吧?
因为create(false),所以create后马上就execute了,然后终止
 
创建对象,其中的参数可以控制是否创建后立即执行。
 
那也就是说create(false)就是执行并调用,create(true)是执行调用然后停止?
 
不是停止,是挂起,然后可以进行各种设置,再用resum重新启动
 
顶部