Witam

Mam wątpliwości co do zastosowanego algorytmu wątków w Delphi:

W programie głównym zadeklarowałem tablicę.
Tworzę 8 równolegle pracujących wątków które odczytują dane i wpisują je do tej tablicy.

Przykład wątku:

unit thread_read_COM1;

interface

uses
Classes, Main,MainFormRooftopBMS, Windows, Messages,SysUtils, ,;
type
TThreadCOM1 = class(TThread)
private
{ Private declarations }
protected
procedure Execute;override;
end;

implementation

procedure TThreadCOM1.Execute;
var
loop1:integer;
begin
while not Terminated do
begin
for loop1:=1 to NumberOfUnit-1 do begin
FreeOnTerminate:=True;
if (GeneralUnitsArray[loop1,3]=2) then begin ReadFromUnitCOM1 (loop1);
sleep(50);
//if Terminated then halt(1);
end;
Takich wątków jest 8 równią się procedurą wpisującą dane do tablicy.

ReadFromUnitCOM1(loop1) – to procedura zadeklarowana w programie głównym która wypełnia tablice danymi.

Gdy pracuje jeden wątek jest ok., ale przy kilku wątkach pracujących równolegle i zapisujących jednocześnie dane w głównej tablicy robi się od czasu do czasu kaszana, dane są z kosmosu. Każda procedura wpisuje tylko wybrane indeksy tablicy więc nie ma możliwości nadpisywania? Czy powinienem jeszcze zwrócić na coś uwagę przy takim sposobie obsługiwania wątków? Chyba synchronizacja nie jest potrzebna, bo odwołuję się tylko do zwykłej tablicy?