semafory, monitory

KA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1
0

Mam problem z pewnym zagadnieniem z programowania współbieżnego, część zadania nad którym się zastanawiam to:

**Przedstaw pseudokod emulujący protokół wstępny i końcowy metod monitora z wykorzystaniem semaforów.
**
Ktoś ma jakieś pomysły i może coś podpowiedzieć?

superdurszlak
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Kraków
  • Postów: 2002
1

A jaki masz problem i na czym on polega? Na jakim etapie się zatrzymałeś?

Wejście do metody monitora można w dużym uproszczeniu zapisać tak:

Kopiuj
1. oczekuj na zwolnienie semafora - powiedzmy że oczekuj dopóki S > 0
2. ustaw S = 1 // w tym momencie każdy inny proces będzie musiał czekać

Wyjście z metody jest w sumie jeszcze prostsze:

Kopiuj
1. ustaw S = 0 // jakiś inny proces będzie mógł wejść do metody

W każdym razie zakładając, że procesy czekają aktywnie tzn. ciągle odpytują o stan semafora. No i że dostęp do semafora jest thread safe tzn. semafor jest zabezpieczony np. przed zmianą wartości przez dwa procesy jednocześnie, np. dzięki operacjom atomowym.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.