Cześć,
mam problem z umiejscowieniem użycia sekcji krytycznych. Mam wątek z publiczną procedurą, która zapisuje informacje do pliku, które dostarczają inne wątki. Pytanie czy uzyć sekcji krytycznej do zabezpieczenie zapisywania takiego pliku w samej procedurze zapisujacej czy w watku, ktory wywoluje taka procedure?
Przyklad:
Mam watek, ktory przy utworzeniu tworzy tez sekcje krytyczna. Procedura Zapisz, zapisuje do pliku wiadomosc przekazana przez inne procedury w tym watku (nie pokazane tutaj) jak i inne watki.
type
TMojWatek = class(TThread)
private
{ Private declarations }
CS:TCriticalSection;
public
procedure Zapisz(msg:string);
protected
procedure Execute; override;
constructor Create;
end;
constructor TMojWatek.Create;
begin
CS.TCriticalSection.Create;
end;
I teraz pytanie czy to powinno byc zrobione w ten sposob?
procedure TMojWatek.Zapisz(msg:string);
begin
CS.Enter;
{ TUTAJ ZAPISUJE DO PLIKU WIADOMOSC msg }
CS.Leave;
end;
Czy zapisujac wiadomosc i wywolujac procedure gdziekolwiek robic to tak:
CS.Enter;
MojWatek.Zapisz('cos');
CS.Leave;
Prosze o pomoc:) dzieki!