OK, vielen Dank. Eine letzte Frage: Ist es denn so sicher (auch wenn es keine optimale Lösung ist)?
Delphi-Quellcode:
type
T = record
Str: string;
Use: Boolean;
end;
private
A: Array[0..5] of T;
CS: TRTLCriticalSection;
procedure TThread.Add(const S: string);
begin
EnterCriticalSection(CS);
try
with A[GetFreeField] do
begin
Str := S;
Use := True;
end;
finally
LeaveCriticalSection(CS);
end;
end;
procedure TThread.Execute;
begin
while not Terminated do
begin
for I := Low(A) to High(A) do
begin
EnterCriticalSection(CS);
if Use then
begin
LeaveCriticalSection(CS);
//hier werden nur Felder von A[I] gelesen und geändert
end
else
LeaveCriticalSection(CS);
end;
Sleep(1);
end;
end;