2011-12-07 14 views
8

Jak utworzyć globalny TList Thread Safe?Delphi: Jak utworzyć globalny TList Thread Safe?

unit Unit1; 
interface 
uses 
    ...; 
type 
    TForm1 = class(TForm) 
    procedure FormCreate(Sender: TObject); 
    end; 

var 
    Form1: TForm1; 
    global_TList: TList; // Not thread safe? 

implementation 

{$R *.dfm} 

procedure TForm1.FormCreate(Sender: TObject); 
begin 
// something 
end; 

end. 

Mam dwa wątki, które mogą pisać do global_TList, ale jak wiem, to nie jest wątek bezpieczny.

Jak to zrobić, aby był bezpieczny?

Delphi 2010 Indy 10, Win7

+0

pokrewne: http://stackoverflow.com/questions/302583/how-can-i-implement-a-thread-safe-list-wrapper-in-delphi –

+0

Zobacz [Pomoc Delphi] (http: // docwiki .embarcadero.com/CodeExamples/XE2/pl/TThreadList_ (Delphi)) na przykład jak pracować z TThreadList. –

Odpowiedz

19

Zastosowanie TThreadList. Problem rozwiązany.

+0

Czy mogę używać TThreadList w wątku? – waza123

+1

Z tego zbudowano TThreadList. TThreadList nie jest listą wątków, jest TList, który jest bezpieczny do użycia z wielu wątków w tym samym czasie. – dthorpe

+0

Dzięki! Ciężko to jest jakaś szafka ... Ale nie ma żadnej własności. Ile, jak liczyć? – waza123