Freigeben über


Gewusst wie: Koordinieren mehrerer Ausführungsthreads

Aktualisiert: November 2007

Um die Threadsicherheit von Multithreadkomponenten zu gewährleisten, muss der Zugriff auf gemeinsam genutzte Ressourcen koordiniert werden. Wenn mehrere Threads gleichzeitig versuchen, auf eine gemeinsam genutzte Ressource zuzugreifen, können Racebedingungen entstehen, die eine Beschädigung der Daten verursachen. Durch die Verwendung von Sperren können Racebedingungen vermieden werden. Ausführliche Informationen über Threadsicherheit und Racebedingungen finden Sie unter Threadsichere Komponenten.

So erstellen Sie eine Sperre für ein Objekt

  1. Identifizieren Sie den atomar auszuführenden Code und das Objekt, für das der Code ausgeführt wird. Einzelheiten dazu finden Sie unter Threadsichere Komponenten.

  2. Fügen Sie eine Sperre für dieses Objekt ein, und schließen Sie den Code innerhalb dieser Sperre ein.

    Dieser Code wird nun atomar für das gesperrte Objekt ausgeführt.

    SyncLock MyObject   ' This represents the start of the lock on MyObject.
    ' Insert code to be executed atomically on MyObject here.
    End SyncLock   ' This represents the end of the lock.
    
    lock (MyObject) 
       // All code inside the braces {} is executed with MyObject locked.
    {
       // Insert code to be executed atomically on MyObject here.
    }
    

Siehe auch

Aufgaben

Exemplarische Vorgehensweise: Erstellen einer einfachen Multithreadkomponente mit Visual Basic

Exemplarische Vorgehensweise: Erstellen einer einfachen Multithreadkomponente mit Visual C#

Konzepte

Threadsichere Komponenten

Übersicht über ereignisbasierte asynchrone Muster

Referenz

BackgroundWorker

Weitere Ressourcen

Multithreading in Komponenten