var
  datatarr: array[0..100]of Integer;
  l: TRTLCriticalSection;constructor Create;
begin
  inherited Create(False);
  InitializeCriticalSection(l);
end;destructor Destroy; override;
begin
  DeleteCriticalSection(l);
end;procedure execute;
var
  i: Integer;
begin
  Lock;
    for i := 1 to 100 do
      Inc(dataarr[i]);
  Unlock;
end;procedure Lock;
begin
  EnterCriticalSection(l);
end;procedure Unlock;
begin
  LeaveCriticalSection(l);
end;