Themen "halten" Monitore nicht so, wie Sie vielleicht denken. Hier ist eine Aufschlüsselung darüber, wie Monitore und Fäden funktionieren:
* Monitore: Ein Monitor ist ein Synchronisationskonstrukt, das sicherstellt, dass nur ein Thread gleichzeitig auf einen kritischen Codeabschnitt zugreifen kann. Dies ist eine Möglichkeit, Rennbedingungen und Datenversorgung zu verhindern, wenn mehrere Threads Ressourcen teilen müssen.
* Threads: Themen sind unabhängige Ausführungseinheiten innerhalb eines Prozesses. Sie können vom Betriebssystem erstellt und verwaltet werden.
wie sie interagieren:
1. das Schloss erfassen: Wenn ein Thread auf eine gemeinsame Ressource zugreifen muss, muss er das Schloss des Monitors erwerben.
2. exklusiver Zugriff: Sobald ein Thread das Schloss erworben hat, hat er exklusiven Zugriff auf den kritischen Abschnitt. Andere Threads, die versuchen, das Schloss zu erwerben, werden blockiert, bis der erste Thread es veröffentlicht.
3. das Schloss veröffentlichen: Wenn der Faden mit dem kritischen Abschnitt fertig ist, wird das Schloss veröffentlicht. Ein weiterer Thread kann dann das Schloss erwerben und die Ausführung fortsetzen.
Schlüsselpunkt: Ein Thread enthält nicht mehrere Monitore gleichzeitig. Es kann mehrere Schlösser nacheinander erwerben, aber es kann jeweils nur ein Schloss aufnehmen.
Beispiel:
Stellen Sie sich zwei Threads vor, Thread A und Thread B, die auf dasselbe Bankkonto zugreifen müssen.
* Thread A will Geld hinterlegen.
* Thread B will Geld abheben.
Ein Monitor wird verwendet, um den Guthaben des Bankkontos zu schützen:
1. Faden A erwirbt das Schloss des Monitors.
2. Thread A führt den Einzahlungsvorgang aus.
3. Faden A veröffentlicht das Schloss.
4. Thread B erwirbt das Schloss des Monitors.
5. Thread B führt den Auszahlungsvorgang aus.
6. Gewinde B veröffentlicht das Schloss.
Dies verhindert, dass beide Threads den Kontostand gleichzeitig ändern und die Datenkonsistenz sicherstellen.
Lassen Sie mich wissen, wenn Sie andere Fragen haben!