Signaalbediening voor monitoren:
- De signaalbewerking voor monitoren staat bekend als signal() of melding()
- Het wordt gebruikt om de wachtende thread op de hoogte te stellen dat de gedeelde bron beschikbaar is gekomen.
- Wanneer de signaalbewerking wordt aangeroepen, geeft de monitor de vergrendeling vrij en mag de wachtende draad doorgaan.
Signaalbewerking voor semaforen:
- De signaalbewerking voor semaforen staat bekend als V() of omhoog()
- Het wordt gebruikt om de waarde van de semafoor te verhogen.
- Wanneer de signaalbewerking wordt aangeroepen, wordt de semafoor met 1 verhoogd, wat aangeeft dat er nog een broneenheid beschikbaar is gekomen.
Belangrijkste verschillen:
- Monitors gebruiken een conditievariabele om ervoor te zorgen dat threads alleen wachten op de specifieke bron die ze nodig hebben, terwijl semaforen een binaire semafoor gebruiken om ervoor te zorgen dat slechts één thread tegelijk toegang heeft tot een gedeelde bron.
- Monitors worden gebruikt voor synchronisatie tussen threads die toegang hebben tot gedeelde bronnen, terwijl semaforen worden gebruikt voor wederzijdse uitsluiting tussen threads die toegang hebben tot gedeelde bronnen. |