Freigeben über


Technologiebeispiel für Reader/Writer-Synchronisierung

Aktualisiert: November 2007

In diesem Beispiel wird die Verwendung der ReaderWriterLock-Klasse für die Threadsynchronisierung veranschaulicht. Mit Funktionen vom Typ ReaderWriterLock kann ein Entwickler Code schreiben, der exklusiven Zugriff auf eine gemeinsam genutzte Ressource erzwingt, während ein Thread die Ressource schreibt oder bearbeitet. Beim Lesen oder Abfragen der Ressource kann jedoch nicht exklusiv zugegriffen werden.

Weitere Informationen zur Verwendung der Beispiele finden Sie unter den folgenden Themen:

Download sample

So erstellen Sie das Beispiel mithilfe der Eingabeaufforderung

  1. Öffnen Sie ein Eingabeaufforderungsfenster, und navigieren Sie zu einem der sprachspezifischen Unterverzeichnisse für das Beispiel.

  2. Geben Sie in der Befehlszeile je nach verwendeter Programmiersprache msbuild ReaderWriterSynchronizationCS.sln oder msbuild ReaderWriterSynchronizationVB.sln ein.

So erstellen Sie das Beispiel mithilfe von Visual Studio

  1. Öffnen Sie Windows Explorer, und navigieren Sie zu einem der sprachspezifischen Unterverzeichnisse für das Beispiel.

  2. Doppelklicken Sie je nach verwendeter Programmiersprache auf das Symbol für ReaderWriterSynchronizationCS.sln oder ReaderWriterSynchronizationVB.sln, um die Datei in Visual Studio zu öffnen.

  3. Klicken Sie im Menü Erstellen auf Projektmappe erstellen.

So führen Sie das Beispiel aus

  1. Navigieren Sie zu dem Verzeichnis, das die neue ausführbare Datei enthält.

  2. Geben Sie ReaderWriter.exe in der Befehlszeile ein.

    Hinweis:

    In diesem Beispiel wird eine Konsolenanwendung erstellt. Sie müssen sie über die Eingabeaufforderung starten, um die Ausgabe anzuzeigen. Beachten Sie beim Ausführen des Beispiels, dass die Start Writing-Ausgabe und die Stop Writing-Ausgabe für jeden Writer nacheinander erfolgen. Grund dafür ist, dass Writer im Gegensatz zu Readern exklusiv auf die Ressource zugreifen.

Hinweise

Weitere Informationen zu Threadsynchronisierung und exklusivem Zugriff finden Sie in den Kommentaren der Quellcode- und der build.proj-Dateien.

In der folgenden Aufzählung sind die in diesem Beispiel verwendeten Klassen und Technologien kurz beschrieben.

  • Threadsynchronisierung

ReaderWriterLock – Wird zum Schützen einer logischen Ressource verwendet, die als Aufruf an Sleep implementiert wird. Threads, die den ReaderWriterLock-Typ verwenden, können eine Sperre auf zwei verschiedene Weisen veranlassen. Erstens kann ein Thread eine Lesesperre veranlassen. Diese ist nicht exklusiv und ermöglicht es anderen Threads, eine Lesesperre für die Klasse zu veranlassen. Zweitens kann ein Thread eine Schreibsperre anfordern. Diese ist exklusiv und wird erst veranlasst, wenn aktuelle Lese- und Schreibsperren aufgehoben wurden.

  • Threading

    • ThreadPool – Entwicklern wird empfohlen, beim Schreiben von verwaltetem Code so oft wie möglich die QueueUserWorkItem-Methode zu verwenden, um asynchrone Methodenaufrufe zu implementieren. In diesem Beispiel wird diese Vorgehensweise zum Ausführen von Code verwendet, der um eine logische Ressource konkurriert.
  • Delegaten

    • WaitCallback – Wird verwendet, um eine typsichere Rückrufmethode für die zu verwendende ThreadPool-Klasse zu erstellen.

Siehe auch

Konzepte

Threads und Threading

Referenz

AutoResetEvent

Delegate

Interlocked

Mutex

System.Threading

ThreadPool

WaitCallback

WaitHandle

Weitere Ressourcen

Threadingobjekte und -features