Tråder "holder ikke" skjermer på den måten du kanskje tenker. Her er en oversikt over hvordan skjermer og tråder fungerer:
* Monitorer: En skjerm er en synkroniseringskonstruksjon som sikrer at bare en tråd kan få tilgang til en kritisk kodeseksjon om gangen. Det er en måte å forhindre raseforhold og datakorrupsjon når flere tråder må dele ressurser.
* tråder: Tråder er uavhengige utførelsesenheter i en prosess. De kan opprettes og administreres av operativsystemet.
hvordan de samhandler:
1. anskaffe låsen: Når en tråd må få tilgang til en delt ressurs, må den skaffe seg skjermens lås.
2. Eksklusiv tilgang: Når en tråd har kjøpt låsen, har den eksklusiv tilgang til den kritiske delen. Andre tråder som prøver å skaffe låsen, vil bli blokkert til den første tråden slipper den.
3. Slipper låsen: Når tråden er ferdig med den kritiske delen, frigjør den låsen. En annen tråd kan deretter skaffe seg låsen og fortsette utførelsen.
nøkkelpunkt: En tråd har ikke flere skjermer samtidig. Den kan skaffe flere låser, en om gangen, men den kan bare holde en lås om gangen.
Eksempel:
Se for deg to tråder, tråd A og tråd B, som trenger å få tilgang til den samme bankkontoen.
* Tråd A ønsker å sette inn penger.
* Tråd B ønsker å ta ut penger.
En skjerm brukes til å beskytte bankkontoens saldo:
1. tråd a anskaffer skjermens lås.
2. tråd A utfører innskuddsoperasjonen.
3. tråd a frigjør låsen.
4. tråd B kjøper skjermens lås.
5. Tråd B utfører uttakelsesoperasjonen.
6. tråd B frigjør låsen.
Dette forhindrer at begge trådene endrer kontosaldoen samtidig, og sikrer datakonsistens.
Gi meg beskjed hvis du har andre spørsmål!