行
行到水穷处
Unregistered / Unconfirmed
GUEST, unregistred user!
大家看下面线程类的私有变量,是否安全!
在 procedure Execute;override;
中 调用 Scan过程 改变success等变量值
随后调用 procedure AppendResult 向一个公用数据集追加数据(同步)
AppendResult使用了大部分私有变量尤其是Success,timeout等值。
问题是:大批量的线程并发,这些Success,timeout会不会不安全(混乱)?
type
TScanThread=class(TThread)
private
Host,Protocol: string;
Port: Integer;
StartTime: string;
Success: integer;
Interval : integer;
TimeOut: integer;
ResultNum,TotalRunNum : integer;
function GetScanMessage: Boolean;
function Scan:integer;
procedure AppendResult;//这里调用Thread私有变量(Host,Protocol,Success,StartTime,TimeOut),安全吗?
protected
procedure Execute;override;
procedure ThreadDone(Sender : TObject);
public
constructor Create();
end;
constructor TScanThread.Create();
begin
inherited Create(True);
OnTerminate:=ThreadDone;
FreeOnTerminate:=True;
end;
在 procedure Execute;override;
中 调用 Scan过程 改变success等变量值
随后调用 procedure AppendResult 向一个公用数据集追加数据(同步)
AppendResult使用了大部分私有变量尤其是Success,timeout等值。
问题是:大批量的线程并发,这些Success,timeout会不会不安全(混乱)?
type
TScanThread=class(TThread)
private
Host,Protocol: string;
Port: Integer;
StartTime: string;
Success: integer;
Interval : integer;
TimeOut: integer;
ResultNum,TotalRunNum : integer;
function GetScanMessage: Boolean;
function Scan:integer;
procedure AppendResult;//这里调用Thread私有变量(Host,Protocol,Success,StartTime,TimeOut),安全吗?
protected
procedure Execute;override;
procedure ThreadDone(Sender : TObject);
public
constructor Create();
end;
constructor TScanThread.Create();
begin
inherited Create(True);
OnTerminate:=ThreadDone;
FreeOnTerminate:=True;
end;