Создание многопоточных приложений. Копытин А.В - 20 стр.

UptoLike

Составители: 

20
CS.Free; // Освобождение памяти
end;
end;
procedure TMainForm.ButtonlClick(Sender: TObject);
begin
CS:=TCriticalSection.Create; // Создание критического раздела
TFooThread.Create(False);
TFooThread.Create(False);
end;
end.
После того как первый поток вызовет метод Enter, всем другим потокам
вход в этот блок кода будет запрещен. А следующий поток, который дойдет до
этой строки кода, впадет в «спячку» , т.е. перейдет в состояние ожидания до тех
пор, пока первый поток не вызовет процедуру Leave. В этот момент система
«будит» второй поток и разрешает пройти через критический раздел. Обратите
внимание, что вызов Leave помещен в конструкцию try..finally здесь
требуется стопроцентная надежность . На рис. 2 показан результат работы этого
приложения, когда потоки уже синхронизированы .
Рис . 2. Результат синхронизированной инициализации массива
Критические разделы являются системными объектами и подлежат обяза-
тельному освобождению путем вызова метода Free.
События
Объект типа событие (event) еще один способ синхронизации потоков. Он
подобен дверному звонку звенит до тех пор, пока его кнопка находится в на-
                                        20
    CS.Free;        //      Освобождение памяти
  end;
end;

procedure TMainForm.ButtonlClick(Sender: TObject);
begin
  CS:=TCriticalSection.Create; // Создание критического раздела
  TFooThread.Create(False);
  TFooThread.Create(False);
end;

end.




   П о сле того как первы й по ток вы зо ветметод Enter, всем другим по токам
вх о д в этотбло к ко дабудетзапрещ ен. А следую щ ий по ток, ко торы й до йдетдо
этой стро ки ко да, впадетв «спячку», т.е. перейдетвсо стояние о ж идания до тех
по р, по ка первы й по ток не вы зо ветпро цедуру Leave. В этотмо ментсистема
«будит» второ й по ток и разреш аетпро йти через критический раздел. О братите
внимание, что вы зо в Leave по мещ ен в ко нструкцию try..finally – здесь
требуется стопро центная надеж но сть. Н арис. 2 по казан результатрабо ты этого
прило ж ения, ко гдапо токи уж е синх ро низиро ваны .




               Р ис . 2. Р езульт ат с инхр онизир ованнойиниц иализац ии м ас с ива

  К ритические разделы являю тся системны ми о бъ ектами и по длеж ато бяза-
тельно муо сво бо ж дению путем вы зо ваметодаFree.

С об ы т и я
   О бъ екттипас обы т ие (event) –ещ е о дин спо со б синх ро низац ии по токо в. О н
по до бен дверно му зво нку – звенитдо тех по р, по каего кно пканах о дится в на-