哪位高手能告诉小弟我TThreadList的属性及用法
谁能告诉我TThreadList的属性及用法。
var
G_NotReadBuf : TThreadList;
function GetModemDataStruct():pointer;
var
Mylist :TList;
begin
Result := nil;
Try
Mylist := G_NotReadBuf.LockList;
if Mylist.Count = 0 then
begin
G_NotReadBuf.UnlockList;
exit;
end;
result := Mylist.Items[0];
Mylist.Remove(result);
except
on aaa : Exception do Errorstr:=pchar('GetModemDataStruct');
end;
G_NotReadBuf.UnlockList;
end;
请问这个函数什么意思。。。。谁能帮帮我?、、、、、Mylist := G_NotReadBuf.LockList;这句又是什么意思啊。?
------解决方案--------------------
Mylist := G_NotReadBuf.LockList; 取得(安全)线程列表
------解决方案--------------------
------解决方案--------------------
TThreadList只是一个收集器,收集一些会导致线程安全的控件、对象的容器,
可以这么理解。使用时,只有两个重要的方法:
private
FLock: TThreadList;
...
end;
procedure SomeProc;
begin
FList.LockList;
try
这里进行线程对FList里面对象的访问,这里是线程安全。
FList通过Add, Remove方法进行对象的Add, Remove操作
finally
FList.UnlockList;
end;
end;
注意:
SomeProc是全局函数,它是供线程访问的函数,而不是线程里面的函数/方法
如果你看VCL源码,你会发现TThreadList其实就是TList and TCriticalSection的集成操作
------解决方案--------------------
locklist
unlocklist
这是一对,一个是锁住,一个是释放锁
var
G_NotReadBuf : TThreadList;
function GetModemDataStruct():pointer;
var
Mylist :TList;
begin
Result := nil;
Try
Mylist := G_NotReadBuf.LockList;
if Mylist.Count = 0 then
begin
G_NotReadBuf.UnlockList;
exit;
end;
result := Mylist.Items[0];
Mylist.Remove(result);
except
on aaa : Exception do Errorstr:=pchar('GetModemDataStruct');
end;
G_NotReadBuf.UnlockList;
end;
请问这个函数什么意思。。。。谁能帮帮我?、、、、、Mylist := G_NotReadBuf.LockList;这句又是什么意思啊。?
------解决方案--------------------
Mylist := G_NotReadBuf.LockList; 取得(安全)线程列表
------解决方案--------------------
------解决方案--------------------
TThreadList只是一个收集器,收集一些会导致线程安全的控件、对象的容器,
可以这么理解。使用时,只有两个重要的方法:
private
FLock: TThreadList;
...
end;
procedure SomeProc;
begin
FList.LockList;
try
这里进行线程对FList里面对象的访问,这里是线程安全。
FList通过Add, Remove方法进行对象的Add, Remove操作
finally
FList.UnlockList;
end;
end;
注意:
SomeProc是全局函数,它是供线程访问的函数,而不是线程里面的函数/方法
如果你看VCL源码,你会发现TThreadList其实就是TList and TCriticalSection的集成操作
------解决方案--------------------
locklist
unlocklist
这是一对,一个是锁住,一个是释放锁