Trådar "håller" inte "monitorer på det sätt du kanske tänker. Här är en uppdelning av hur bildskärmar och trådar fungerar:
* monitorer: En bildskärm är en synkroniseringskonstruktion som säkerställer att endast en tråd kan komma åt en kritisk kodavsnitt åt gången. Det är ett sätt att förhindra rasförhållanden och datakorruption när flera trådar behöver dela resurser.
* trådar: Trådar är oberoende exekveringsenheter inom en process. De kan skapas och hanteras av operativsystemet.
Hur de interagerar:
1. förvärva låset: När en tråd behöver komma åt en delad resurs måste den förvärva monitorns lås.
2. Exklusiv åtkomst: När en tråd har förvärvat låset har den exklusiv tillgång till det kritiska avsnittet. Andra trådar som försöker skaffa låset kommer att blockeras tills den första tråden släpper det.
3. Släpp låset: När tråden är klar med det kritiska avsnittet släpper den låset. En annan tråd kan sedan förvärva låset och fortsätta körningen.
Nyckelpunkt: En tråd har inte flera bildskärmar på en gång. Det kan skaffa flera lås, en åt gången, men det kan bara hålla ett lås åt gången.
Exempel:
Föreställ dig två trådar, tråd A och tråd B, som behöver komma åt samma bankkonto.
* Tråd A vill sätta in pengar.
* Tråd B vill ta ut pengar.
En bildskärm används för att skydda bankkontoens saldo:
1. tråd A förvärvar monitorns lås.
2. tråd A utför insättningsoperationen.
3. tråd A släpper låset.
4. tråd B förvärvar monitorns lås.
5. tråd B Utför uttagsoperationen.
6. tråd B släpper låset.
Detta förhindrar att båda trådarna ändrar kontobalansen samtidigt, vilket säkerställer datakonsistens.
Låt mig veta om du har några andra frågor!