Multicore en synchronisatie

Welke vergelijking van een mutex (slapende lock) en een spinlock is juist?

  1. 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
  2. BEen mutex blijft ook tijdens het wachten CPU-tijd gebruiken en is dus alleen voor korte wachttijden bruikbaar
  3. 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.

Dit onderwerp oefenen Naar de onderwerppagina

Meer vragen over Multicore en synchronisatie

  1. Welk voorbeeld van een deadlock is juist?
  2. Welke methode is de meest gangbare om deadlock te voorkomen in een programma met meerdere locks?
  3. Wat legt een geheugenconsistentiemodel vast?
  4. Welke uitleg over sequentiële consistentie (sequential consistency) is juist?
  5. De bovenstaande twee threads worden tegelijk op verschillende cores uitgevoerd (er is geen herordening door de compiler). Welke uitkomst treedt niet op bij sequentiële consistentie, maar kan wel optreden bij echte CPU's zoals x86?

Vergelijkingen bij dit onderwerp