-
Notifications
You must be signed in to change notification settings - Fork 0
Mutex
rexina edited this page Oct 30, 2014
·
5 revisions
Przemyślenia dotyczące mutexów:
-
trzymamy tablicę bitową oznaczającą stan mutexu (otwarty/zamknięty).
-
mutexy numerujemy od 0 do N (konfigurowalne)
-
mutex.give()
ma odblokować wszystkie zadania:- iteracja po zablokowanych zadaniach:
- jeśli zablokowane przez tego mutexa to wrzuć do schedulera
- zaznacz że odblokowany
- uruchom
Tick()
- iteracja po zablokowanych zadaniach:
-
mutex.take()
:- sprawdzić czy mutex jest wolny, jeśli nie:
- wrzucić zadanie do tablicy zablokowanych oraz wywołać systicka
- sprawdzić czy mutex jest wolny, jeśli nie:
-
mutex.time(timeout)
:- generujemy timeouta odblokowującego mutexa - po czasie timeout.