Multicore en synchronisatie
Welke vergelijking van een mutex (slapende lock) en een spinlock is juist?
- AEen mutex geeft tijdens het wachten de CPU vrij en is geschikt voor lange wachttijden, maar slapen en wakker worden kost werk van het besturingssysteem
- BEen mutex blijft ook tijdens het wachten CPU-tijd gebruiken en is dus alleen voor korte wachttijden bruikbaar
- CMutex en spinlock zijn hetzelfde en verschillen alleen in naam
Antwoord en toelichting tonen
Antwoord: A. Een mutex geeft tijdens het wachten de CPU vrij en is geschikt voor lange wachttijden, maar slapen en wakker worden kost werk van het besturingssysteem
Als een mutex niet kan worden genomen, zet hij de thread in een wachttoestand, laat de CPU aan andere threads en wekt het besturingssysteem de thread wanneer de lock wordt vrijgegeven. Omdat er geen CPU-tijd wordt verspild tijdens het wachten, is hij geschikt voor lange wachttijden, maar het slapen, wakker worden en de contextwisseling kosten enkele microseconden. Mutexen in echte bibliotheken combineren de voordelen van beide, bijvoorbeeld door eerst even te spinnen en dan te slapen.