Tråde "ikke" holder "skærme på den måde, du måske tænker på. Her er en sammenbrud af, hvordan skærme og tråde fungerer:
* Monitorer: En skærm er en synkroniseringskonstruktion, der sikrer, at kun en tråd kan få adgang til et kritisk kodesektion ad gangen. Det er en måde at forhindre raceforhold og datakorruption, når flere tråde skal dele ressourcer.
* tråde: Tråde er uafhængige udførelsesenheder inden for en proces. De kan oprettes og styres af operativsystemet.
hvordan de interagerer:
1. Erhvervelse af låsen: Når en tråd har brug for at få adgang til en delt ressource, skal den erhverve skærmens lås.
2. Eksklusiv adgang: Når en tråd har erhvervet låsen, har den eksklusiv adgang til det kritiske afsnit. Andre tråde, der prøver at erhverve låsen, blokeres, indtil den første tråd frigiver den.
3. frigivelse af låsen: Når tråden er færdig med det kritiske afsnit, frigiver den låsen. En anden tråd kan derefter erhverve låsen og fortsætte udførelsen.
Nøglepunkt: En tråd holder ikke flere skærme på én gang. Det kan erhverve flere låse ad gangen, men det kan kun indeholde en lås ad gangen.
Eksempel:
Forestil dig to tråde, tråd A og tråd B, der har brug for at få adgang til den samme bankkonto.
* Tråd A ønsker at deponere penge.
* Tråd B ønsker at trække penge tilbage.
En skærm bruges til at beskytte bankkontoens balance:
1.
2. Tråd A udfører indbetalingsoperationen.
3. Tråd A frigiver låsen.
4. tråd B erhverver skærmens lås.
5. Tråd B udfører tilbagetrækningsoperationen.
6. tråd B frigiver låsen.
Dette forhindrer begge tråde i at ændre kontosaldoen samtidigt, hvilket sikrer datakonsistens.
Fortæl mig, hvis du har andre spørgsmål!