ВУЗ:
Составители:
Рубрика:
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) –ещ е о дин спо со б синх ро низац ии по токо в. О н по до бен дверно му зво нку – звенитдо тех по р, по каего кно пканах о дится в на-
Страницы
- « первая
- ‹ предыдущая
- …
- 18
- 19
- 20
- 21
- 22
- …
- следующая ›
- последняя »