Quantcast
Channel: Форум программистов и сисадминов Киберфорум
Viewing all articles
Browse latest Browse all 519591

TCriticalSection в библиотеке PPL(TTask) - Delphi для начинающих

$
0
0
Добрый день уважаемые форумчане. Возник вопрос.

Имеется глобальная переменная
Код:

var
 global_var: String;

Так же имеется процедура где эта переменная проверяется;
Код:

procedure test;
var
i:Integer
begin
i:=Random(100);
if global_var < i then global_var:=i;
end;

Эту процедуру я вызываю через потоки TTask
Код:

  SetLength(tasks, 5);
  for i := 0 to 4 do
  begin
    tasks[i]:=TTask.Run(
      procedure
      begin
        Test;
      end);
  end;
  TTask.WaitForAll(tasks);

Вопрос если я использую критическую секцию таким образом:
Код:

var
i:Integer
CS: TCriticalSection;
begin
CS:=TCriticalSection.Create;
i:=Random(100);
CS.Enter;
if global_var < i then global_var:=i;
CS.Leave;
end;

Это правильная реализация ? Можете кто то пояснить ?

Viewing all articles
Browse latest Browse all 519591


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>