Läs–ändra–skriv

Inom datavetenskap är läs–modifiera–skriv en klass av atomoperationer (som test-and-set , fetch-and-add och compare -and-swap ) som både läser en minnesplats och skriver ett nytt värde in i den samtidigt, antingen med ett helt nytt värde eller någon funktion av det tidigare värdet. Dessa operationer förhindrar tävlingsförhållanden i flertrådsapplikationer. Vanligtvis används de för att implementera mutexes eller semaforer . Dessa atomoperationer används också flitigt vid icke-blockerande synkronisering .

Maurice Herlihy (1991) rangordnar atomoperationer efter deras konsensusnummer , enligt följande:

Det är omöjligt att implementera en operation som kräver ett givet konsensusnummer med endast operationer med ett lägre konsensusnummer, oavsett hur många sådana operationer man använder. Läs-modifiera-skriv-instruktioner ger ofta oväntade resultat när de används på I/O- enheter, eftersom en skrivoperation kanske inte påverkar samma interna register som skulle nås i en läsoperation.

Denna term är också associerad med RAID- nivåer som utför faktiska skrivoperationer som atomära läs-modifiera-skrivsekvenser. Sådana RAID-nivåer inkluderar RAID 4 , RAID 5 och RAID 6 .

Se även