Dieser Artikel ist ein Spiegelartikel der maschinellen Übersetzung, bitte klicken Sie hier, um zum Originalartikel zu springen.

Ansehen: 17802|Antwort: 0

[Kommunikation] Schloss C #

[Link kopieren]
Veröffentlicht am 21.02.2019 09:43:39 | | |
1. Warum sperren und was ist gesperrt?

Wenn wir Threads verwenden, ist der effizienteste Weg natürlich asynchron, das heißt, jeder Thread läuft zur gleichen Zeit, ohne aufeinander angewiesen zu sein und zu warten. Wenn jedoch verschiedene Threads auf eine bestimmte Ressource zugreifen müssen, ist ein Synchronisationsmechanismus erforderlich, das heißt, beim Lesen und Schreiben derselben Ressource muss die Ressource nur von einem Thread gleichzeitig betrieben werden, um sicherzustellen, dass jede Operation effektiv und unmittelbar ist, also die Atomität ihres Betriebs zu gewährleisten. lock ist die am häufigsten verwendete Synchronisationsmethode in C#, im Format lock(objectA){codeB}.


lock(objectA){codeB} scheint einfach, hat aber tatsächlich drei Bedeutungen, was für seine angemessene Verwendung unerlässlich ist:
1. Ist ObjektA gesperrt? Wenn nicht, sperre ich es, ansonsten warte, bis ObjektA freigegeben wird.
2. Nach der Sperrung können andere Threads codeB nicht aufrufen oder ObjectA während der Ausführung von CodeB verwenden.
3. Nach Ausführung von CodeB Release ObjectA und CodeB kann von anderen Threads genutzt werden.

2. Was ist mit dem Schloss passiert?

Schauen wir uns ein Beispiel an:

Im t1-Thread ruft LockMe lock(this), also c1 in der Hauptfunktion, auf, und beim Aufruf von lock(c1) im Hauptthread muss er warten, bis der Lock-Block in t1 ausgeführt ist, bevor auf c1 zugegriffen wird, das heißt, alle c1-bezogenen Operationen können nicht abgeschlossen werden, sodass wir sehen, dass selbst c1. DoNotLockMe() wird nicht ausgeführt.





Vorhergehend:C# im ArraySegment-Teil des Arrays
Nächster:Tiefgehende Praxis von Spring Boot. Chen Shaojian und SpringBoot enthüllen + schnell ein Microservice-System aufbauen
Verzichtserklärung:
Alle von Code Farmer Network veröffentlichten Software, Programmiermaterialien oder Artikel dienen ausschließlich Lern- und Forschungszwecken; Die oben genannten Inhalte dürfen nicht für kommerzielle oder illegale Zwecke verwendet werden, andernfalls tragen die Nutzer alle Konsequenzen. Die Informationen auf dieser Seite stammen aus dem Internet, und Urheberrechtsstreitigkeiten haben nichts mit dieser Seite zu tun. Sie müssen die oben genannten Inhalte innerhalb von 24 Stunden nach dem Download vollständig von Ihrem Computer löschen. Wenn Ihnen das Programm gefällt, unterstützen Sie bitte echte Software, kaufen Sie die Registrierung und erhalten Sie bessere echte Dienstleistungen. Falls es eine Verletzung gibt, kontaktieren Sie uns bitte per E-Mail.

Mail To:help@itsvse.com