Samtidighedskontrol
Samtidighedskontrol er inden for datalogi den styring, der skal til for at sikre, at computerprogrammer virker korrekt når flere aktører i bred forstand skal bruge de samme ressourser. Mekanismerne til samtidighedskontrol stilles til rådighed af computerens styresystem.
En af de typer problemer som samtidihedskontrol kan løse er mistede opdateringer. Eksempelvis kan to brugere åbne samme tekstfil og rette i den på samme tid. Den, der gemmer ændringerne først vil få overskrevet sine ændringer.
Grundlæggende begreber
Et program, der er i gang, har mindst en proces. Kommunikation mellem processer sker via styresystemets mekanismer til interproceskommunikation. En proces har mindst en tråd, der er den aktive del i en proces. tråde i samme proces har adgang til de samme dele af computerens hukommelse. problematikkerne omkring samtidighedskontrol er de samme uanset om det drejer sig om programmer, processer eller tråde, der skal have adgang til fælles ressourcer. En kritisk sektion er en del at et program, hvor der kun må være en aktiv tråd ad gangen.
Eksempel
To tråde A og B i et program bruger samme variabel til en beregning. Uden samtidighedskontrol kan der ske følgende:
A B Kommentar Læs X A læser X. Værdien er eksempelvis 10 Læs X B læser samme værdi Sæt Y = X + 10 A beregner den nye værdi til 20 Sæt Y = X – 5 B beregner den nye værdi til 5 Sæt X = Y A sætter X til 20 Sæt X = Y B sætter X til 5
Løsningen er, at gøre læsning og opdatering til en kritisk sektion. Med en kritisk sektion kan forløbet se ud som følger:
A B Kommentar Læs X A læser X. Værdien er eksempelvis 10 Sæt Y = X + 10 A beregner den nye værdi til 20 Sæt X = Y A sætter X til 20 Læs X B læser X. Værdien er 20 Sæt Y = X – 5 B beregner den nye værdi til 15 Sæt X = Y B sætter X til 15
Den kritiske sektion gør, at ingen beregninger går tabt. Resultatet er også det samme uanset om det er A eller B, der kommer i gang først.
Synkroniseringsprimitiver
Der bruges en del forskellige mekanismer til etablering af kritiske sektioner. De følgende er omtrent ordnet efter abstraktionsniveau.