Krzysztof Mossakowski
Programowanie w środowisku Windows
2004 - Zadania
Procesy, wątki
Wersja B
Wzór programu
Problem czytelników i pisarzy:
problem dotyczy dostępu do wspólnego dokumentu
są 2 typu użytkowników dokumentu: pisarze i czytelnicy
ograniczenia w dostępie do dokumentu:
tylko jeden pisarz może jednocześnie edytować dokument
w czasie edycji dokumentu przez pisarza, czytelnicy nie mają prawa czytać dokumentu
pisarz nie może rozpocząć edycji dopóki jakikolwiek czytelnik korzysta z dokumentu
wielu czytelników może czytać dokument jednocześnie
Działanie programu:
Dialog:
wizualizacja rozwiązania problemu czytelników i pisarzy
trzy kontrolki listy
(oczekujący na dostęp do dokumentu pisarze, czytelniczy i aktualnie korzystający z dokumentu)
dwa przyciski
(dodające nowego czytelnika i pisarza)
szczegóły implementcji:
są dwa typy wątów (wątek pisarza i wątek czytelnika)
każdy czytelnik i pisarz są osobnym wątkiem swojego typu
nowy czytelnik (pisarz) pojawia się na liście oczekujących czytelników (pisarzy)
w momencie uzyskania dostępu do dokumentu czytelnik (pisarz) jest przenoszony na listę aktualnie korzystających z dokumentu)
każdy czytelnik (pisarz) rząda dostępu do dokumentu natychmiast po utworzeniu
pisarz korzysta z dokumentu 5 sekund
czytelnik korzysta z dokumentu 2 sekundy
po skorzystaniu z dokumentu czytelnik (pisarz) jest usuwany z listy, jego watek kończy działanie
zamknięcie dialogu powoduje zakończenie działania całego programu
Wskazówki:
CreateThread
CreateMutex, CreateSemaphore
WaitForSingleObject
CRITICAL_SECTION