■ Stosowanie mechanizmu zasypiania i budzenia w wieloprocesorze prowadzi do problemu zgubionej pobudki.
• Rozważmy następujący przypadek:
- Watek W1 na procesorze P1 nakłada blokadę na zasób Z1.
- Watek W2 na procesorze P2 stwierdza, że zasób Z1 jest zablokowany (zatem wątek \N2 musi wywołać funkcję sleep (), ale w tym momencie zostaje wywłaszczony).
- Wątek W1 zwalnia zasób Z1. Próbuje obudzić wszystkie czekające wątki, ale stwierdza, że żaden wątek nie czeka.
- Watek W2 wykonuje funkcję sleep (), ustawia znacznik potrzebny i oczekuje na zasób.
w Wątek W1 nie budzi wątku W2, czyli dochodzi do zgubienia pobudki, w Jeżeli oprócz wątku W2 żaden inny wątek nie czeka na zasób Z1, to niespełniona jest własność żywotności (stała blokada wątku W2).
© Marek Nowak
Programowanie współbieżne w systemach operacyjnych UNIX