孤
孤云
Unregistered / Unconfirmed
GUEST, unregistred user!
问题是这样的,有3个线程A,B,C
procedure cmd_start;
var
A:TA;
B:TB
C:TC
begin
.......
.......
A:=TA.Create(False);//先执行线程A
//在线程A中有一个变量var1,当该变量var1=const1(某一特定值)时,触发线程B,同时结束或者暂停线程A,当B执行完,且var2=const2时在重新运行A;
B:=TB.Create(False);
//同样当线程A和线程B中的一个变量var1=const3 and var3=const4同时满足时,触发线程C,同时结束或者暂停线程A和线程B,当var4=const5时在重新运行A和B,如此循环
C:=TC.Create(False);
end;
请问在线程中怎么实现?
procedure TA.Execute;
var
begin
WHILE Truedo
begin
IF Terminated then
Break;
Synchronize(DoInOPT1);
//执行线程操作程序
.......
end;
end;
procedure TB.Execute;
var
begin
WHILE Truedo
begin
IF Terminated then
Break;
//请问在线程里怎么弄,直接A.Terminate;??
if var1=const1 then
begin
A.Terminate;//可以这样????
Synchronize(DoInOPT2);
//执行线程操作程序
if var2=const2 then
begin
A:=TA.Create(False);
//????
end;
end;
.......
end;
end;
procedure TC.Execute;
var
begin
WHILE Truedo
begin
IF Terminated then
Break;
//该怎么弄?
Synchronize(DoInOPT3);
//执行线程操作程序
.......
end;
end;
procedure cmd_start;
var
A:TA;
B:TB
C:TC
begin
.......
.......
A:=TA.Create(False);//先执行线程A
//在线程A中有一个变量var1,当该变量var1=const1(某一特定值)时,触发线程B,同时结束或者暂停线程A,当B执行完,且var2=const2时在重新运行A;
B:=TB.Create(False);
//同样当线程A和线程B中的一个变量var1=const3 and var3=const4同时满足时,触发线程C,同时结束或者暂停线程A和线程B,当var4=const5时在重新运行A和B,如此循环
C:=TC.Create(False);
end;
请问在线程中怎么实现?
procedure TA.Execute;
var
begin
WHILE Truedo
begin
IF Terminated then
Break;
Synchronize(DoInOPT1);
//执行线程操作程序
.......
end;
end;
procedure TB.Execute;
var
begin
WHILE Truedo
begin
IF Terminated then
Break;
//请问在线程里怎么弄,直接A.Terminate;??
if var1=const1 then
begin
A.Terminate;//可以这样????
Synchronize(DoInOPT2);
//执行线程操作程序
if var2=const2 then
begin
A:=TA.Create(False);
//????
end;
end;
.......
end;
end;
procedure TC.Execute;
var
begin
WHILE Truedo
begin
IF Terminated then
Break;
//该怎么弄?
Synchronize(DoInOPT3);
//执行线程操作程序
.......
end;
end;