Multicore en synchronisatie

Wat is juist over geheugenbewerkingen met acquire- en release-betekenis?

  1. AAcquire en release zijn beide de zwaarste barrières die alle lees- en schrijfacties volledig stoppen
  2. BAcquire is geheugen reserveren en release is het geheugen met free vrijgeven
  3. CLees- en schrijfacties na een acquire gaan niet vóór de acquire, en lees- en schrijfacties vóór een release gaan niet na de release
Antwoord en toelichting tonen

Antwoord: C. Lees- en schrijfacties na een acquire gaan niet vóór de acquire, en lees- en schrijfacties vóór een release gaan niet na de release

De bewerking waarmee een lock wordt genomen heeft de betekenis van acquire en die waarmee hij wordt losgelaten die van release. Bewerkingen na de acquire lekken niet naar vóór het nemen van de lock en bewerkingen vóór de release niet naar na het loslaten, zodat lees- en schrijfacties binnen het door de lock beschermde gebied daarbinnen blijven. Omdat het minder beperkend is dan een volledige barrière die beide richtingen stopt, kan de hardware de overige verwisselingen benutten om de prestaties te behouden.

Dit onderwerp oefenen Naar de onderwerppagina

Meer vragen over Multicore en synchronisatie

  1. Waarom volstaat het in C niet om een flagvariabele die tussen threads wordt doorgegeven alleen volatile te maken als synchronisatie?
  2. Waarom kan bij _Atomic van C11 en std::atomic van C++11 de geheugenvolgorde (memory order) worden opgegeven?
  3. Welke vergelijking van 'grofkorrelige locks', waarbij een grote datastructuur als geheel door één lock wordt beschermd, en 'fijnkorrelige locks', waarbij delen elk door een eigen lock worden beschermd, is juist?
  4. Welke eigenschap van een lock-free algoritme is juist?
  5. Welke uitleg over een kritieke sectie is juist?

Vergelijkingen bij dit onderwerp