[ Pobierz całość w formacie PDF ]
Listing 8.1. Kod źródłowy nowego modułu wygenerowanego przez Delphi
312
(03‐07‐21/12:46)
C:\Andrzej\PDF\Delphi 7 Kompendium programisty\r08 doc
.
.
Rozdział 8. Aplikacje wielowątkowe
313
Nowy moduł zawiera klasẹ , w której umieszczona jest jedna metoda (w sekcji
). To właśnie w metodzie należy umieścić właściwy kod wątku. Ponadto w mo-
dule znajduje siẹ ciekawy komentarz, który zostanie przeze mnie omówiony w dalszej czẹści
rozdziału.
W każdym bądź razie nie jest konieczne tworzenie nowego modułu dla klasy wątku. Nie jest
także konieczne tworzenie samej klasy w taki sposób, w jaki to przedstawiłem. Równie dobrze
można zadeklarować klasẹ samodzielnie.
Wskazówka
Podczas samodzielnego deklarowania klasy dziedziczącej po nie wolno
zapominać o deklaracji metody . Metoda musi być umieszczona
w sekcji i opatrzona dyrektywą .
Kilka instancji wątku
W każdej klasie wątku mogą być oczywiście deklarowane metody i właściwości ― zupełnie
tak samo, jakby to była zwykła klasa. Istnieje także możliwość uruchamiania kilku klas wątku
jednocześnie! Powoduje to stworzenie dla każdej klasy osobnej instancji zmiennej i zarezer-
wowanie osobnego bloku pamiẹci.
Tworzenie wątku przedstawia siẹ nastẹpująco:
Po wywołaniu konstruktora klasy uruchamiany jest cały proces (metoda ), a to za sprawą
parametru typu zawartego w konstruktorze. Jeżeli wartość tego parametru to ,
uruchomienie wątku nastąpi dopiero po wywołaniu metody .
Wskazówka
Nie zaleca siẹ uruchamiania w tym samym czasie dużej ilości wątków w ramach tego
samego procesu. Zalecana ilość to 16 wątków w ramach jednego procesu.
Tworzenie klasy
Przedstawiẹ Ci teraz przykładowy program tworzący trzy wątki pochodne, które bẹdą działać
jednocześnie. Ich działanie nie spowoduje zablokowania programu ― użytkownik bẹdzie
mógł przeciągać okno programu, minimalizować go itp.
Przykładowy program bẹdzie banalny i raczej niepraktyczny. Wątek wylosuje jakąś liczbẹ z zakresu
od 0 do 999 i wykona pẹtlẹ od liczby 1 do tej wylosowanej wartości. Pẹtla bẹdzie wykonywana
tylko przez jakiś czas ―dziẹki spowalnianiu (funkcja ). Przerwa miẹdzy kolejnymi ite-
racjami to 100 milisekund. Program przedstawiony został na rysunku 8.3.
314
Część II
Rysunek 8.3. Działanie trzech wątków naraz
Postẹp wykonywania pẹtli przedstawiony jest za pomocą komponentów .
Kod klasy
Deklaracja klasy jest dość prosta ― wykorzystujemy jedną metodẹ, konstruktor oraz dwie
właściwości:
Deklarowanie konstruktora przez programistẹ nie jest konieczne, lecz ja stworzyłem go ze
wzglẹdu na konieczność przekazania do klasy pewnego parametru, jakim jest numer wątku:
Na początku w konstruktorze wywołujemy konstruktor klasy bazowej. Nastẹpnie zmiennej
przypisujemy wartość, która została podana wraz z parametrem konstruktora.
Oto, jak wygląda główna procedura ― :
314
(03‐07‐21/12:46)
C:\Andrzej\PDF\Delphi 7 Kompendium programisty\r08 doc
.
.
Rozdział 8. Aplikacje wielowątkowe
315
Zwróć uwagẹ na przypisanie do właściwości wartości . Spowoduje to
zwolnienie klasy po zakończeniu działania wątku.
Kolejne instrukcje są już ściśle związane z działaniem owego wątku. Ciekawą konstrukcją jest:
Taki zapis umożliwia znalezienie na formularzu komponentu bez znajomości jego nazwy. Wy- [ Pobierz całość w formacie PDF ]
zanotowane.pl doc.pisz.pl pdf.pisz.pl freetocraft.keep.pl
Listing 8.1. Kod źródłowy nowego modułu wygenerowanego przez Delphi
312
(03‐07‐21/12:46)
C:\Andrzej\PDF\Delphi 7 Kompendium programisty\r08 doc
.
.
Rozdział 8. Aplikacje wielowątkowe
313
Nowy moduł zawiera klasẹ , w której umieszczona jest jedna metoda (w sekcji
). To właśnie w metodzie należy umieścić właściwy kod wątku. Ponadto w mo-
dule znajduje siẹ ciekawy komentarz, który zostanie przeze mnie omówiony w dalszej czẹści
rozdziału.
W każdym bądź razie nie jest konieczne tworzenie nowego modułu dla klasy wątku. Nie jest
także konieczne tworzenie samej klasy w taki sposób, w jaki to przedstawiłem. Równie dobrze
można zadeklarować klasẹ samodzielnie.
Wskazówka
Podczas samodzielnego deklarowania klasy dziedziczącej po nie wolno
zapominać o deklaracji metody . Metoda musi być umieszczona
w sekcji i opatrzona dyrektywą .
Kilka instancji wątku
W każdej klasie wątku mogą być oczywiście deklarowane metody i właściwości ― zupełnie
tak samo, jakby to była zwykła klasa. Istnieje także możliwość uruchamiania kilku klas wątku
jednocześnie! Powoduje to stworzenie dla każdej klasy osobnej instancji zmiennej i zarezer-
wowanie osobnego bloku pamiẹci.
Tworzenie wątku przedstawia siẹ nastẹpująco:
Po wywołaniu konstruktora klasy uruchamiany jest cały proces (metoda ), a to za sprawą
parametru typu zawartego w konstruktorze. Jeżeli wartość tego parametru to ,
uruchomienie wątku nastąpi dopiero po wywołaniu metody .
Wskazówka
Nie zaleca siẹ uruchamiania w tym samym czasie dużej ilości wątków w ramach tego
samego procesu. Zalecana ilość to 16 wątków w ramach jednego procesu.
Tworzenie klasy
Przedstawiẹ Ci teraz przykładowy program tworzący trzy wątki pochodne, które bẹdą działać
jednocześnie. Ich działanie nie spowoduje zablokowania programu ― użytkownik bẹdzie
mógł przeciągać okno programu, minimalizować go itp.
Przykładowy program bẹdzie banalny i raczej niepraktyczny. Wątek wylosuje jakąś liczbẹ z zakresu
od 0 do 999 i wykona pẹtlẹ od liczby 1 do tej wylosowanej wartości. Pẹtla bẹdzie wykonywana
tylko przez jakiś czas ―dziẹki spowalnianiu (funkcja ). Przerwa miẹdzy kolejnymi ite-
racjami to 100 milisekund. Program przedstawiony został na rysunku 8.3.
314
Część II
Rysunek 8.3. Działanie trzech wątków naraz
Postẹp wykonywania pẹtli przedstawiony jest za pomocą komponentów .
Kod klasy
Deklaracja klasy jest dość prosta ― wykorzystujemy jedną metodẹ, konstruktor oraz dwie
właściwości:
Deklarowanie konstruktora przez programistẹ nie jest konieczne, lecz ja stworzyłem go ze
wzglẹdu na konieczność przekazania do klasy pewnego parametru, jakim jest numer wątku:
Na początku w konstruktorze wywołujemy konstruktor klasy bazowej. Nastẹpnie zmiennej
przypisujemy wartość, która została podana wraz z parametrem konstruktora.
Oto, jak wygląda główna procedura ― :
314
(03‐07‐21/12:46)
C:\Andrzej\PDF\Delphi 7 Kompendium programisty\r08 doc
.
.
Rozdział 8. Aplikacje wielowątkowe
315
Zwróć uwagẹ na przypisanie do właściwości wartości . Spowoduje to
zwolnienie klasy po zakończeniu działania wątku.
Kolejne instrukcje są już ściśle związane z działaniem owego wątku. Ciekawą konstrukcją jest:
Taki zapis umożliwia znalezienie na formularzu komponentu bez znajomości jego nazwy. Wy- [ Pobierz całość w formacie PDF ]