Multicore en synchronisatie
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?
- AGrofkorrelige locks hebben altijd meer parallellisme
- BMet fijnkorrelige locks neemt het aantal locks af
- CFijnkorrelig geeft meer parallellisme doordat meerdere threads tegelijk verschillende delen kunnen gebruiken, maar het ontwerp wordt complexer en het risico op deadlock groter
Antwoord en toelichting tonen
Antwoord: C. Fijnkorrelig geeft meer parallellisme doordat meerdere threads tegelijk verschillende delen kunnen gebruiken, maar het ontwerp wordt complexer en het risico op deadlock groter
Grofkorrelige locks zijn eenvoudig en minder foutgevoelig, maar threads die niet-gerelateerde delen gebruiken wachten ook op elkaar, zodat het bij meer cores moeilijk sneller wordt. Bij een fijne korrel, zoals een aparte lock per bucket van een hashtabel, kunnen verschillende delen tegelijk worden bewerkt. Er zijn echter meer situaties waarin meerdere locks worden genomen, en het beheer van de volgorde van nemen en de last van de locks zelf worden een probleem.