Re: Verstaednisfrage CCriticalSection

Tech Tip: Click here to run a free scan for Windows Errors and optimize PC performance

From: Jens Geyer (anonymous_at_discussions.microsoft.com)
Date: 03/23/04


Date: Tue, 23 Mar 2004 16:13:35 +0100

Hallo Robert,

> wenn ich eine CCritical locke, welche Variablen werden dann
> vor Zugriff aus den anderen Thread gesperrt?

Gar keine.

Die CriticalSection ist - wie auch die Synchronisationsobjekte - ein
Hilfsmittel, um den gleichzeitigen Zugriff zu verhindern. Es ist also eine
Art logische Sperreung, und für die Logik dahinter ist der Entwickler
verantwortlich. Der muß sicherstellen, daß alle Zugriffe auf den gewünschten
Satz Variablen immer durch die CS geschützt wird. Die CS sperrt selbst
zunächst gar nichts.

Du kannst zB. festlegen, daß Du für einen bestimmten Zweck drei Integers,
einen Char-Buffer und einen Interfacezeiger brauchst, die irgendeinem
gemeinsamen Zweck erfüllen. Dies Daten sollten immer in einem konsistenten
Zustand sein. Deshalb wirst Du dann also eine CS vorsehen, die jeder Thread
zunächst locken muß, bevor er Die Daten bearbeitet.

Wenn der Thread die CS hat, ändert er Die Daten wie gewünscht ab. Nach
Abschluß aller Arbeiten an den Daten wird der Thread die CS freigeben und
somit anderen Threads den Zugriff ermöglichen.

MSDN Library Visual Studio 6.0
  Visual C++-Dokumentation
    Arbeiten mit Visual C++
      Visual C++-Programmierhandbuch
        Hinzufügen von Programmfunktionen
          Details
            Multithreading-Themen
              Multithreading mit C++ und MFC
                Multithreading: Wann sollen Synchronisierungsklassen
verwendet werden?

JensG



Relevant Pages

  • Re: Thread Kontext bei Methodenaufrufen
    ... "MachWas" greift definitiv nicht auf irgendwelche ... Thread A und Thread B schon in der Methode "MachWas" stehen, ... Jeder Thread hat seinen eigenen Stack. ... muss der Zugriff synchronisiert werden. ...
    (microsoft.public.de.german.entwickler.dotnet.vb)
  • Re: Java Script Interpreter - Sicherheit
    ... den Zugriff auf externe Objekte ... externen Code intepretieren!? ... Du kannst versuchen, mit einem zweiten Thread den Thread, in dem du das Script ausführst, den ersten nach einer bestimmten Zeit zu beenden. ...
    (de.comp.lang.java)
  • Re: GUI Thread
    ... die Lösung ist schlichtweg ein Implementierungsfehler, der nicht zur Laufzeit in eine Ausnahme mündete. ... Du musst den direkten Zugriff auf das Steuerelement durch das Gespann 'Control.InvokeRequired' + 'Control.Invoke'/'Control.BeginInvoke' ersetzen. ...
    (microsoft.public.de.german.entwickler.dotnet.csharp)
  • Re: Checkboxen "verschwinden"
    ... >> zum Zugriff darauf aus dem anderen Thread. ... die dann im Hauptform angezeigt werden. ... Lade doch einfach die Assembly und dann instanziere ...
    (microsoft.public.de.german.entwickler.dotnet.csharp)
  • Re: unsichtbare Dateien sichtbar machen?
    ... Posting von 19:12 Uhr in diesem Thread. ... Mir ist nicht so ganz klar, warum Du dich mit dem Terminal rumplagst und ... nicht eines der Programme benutzt, die extra für diesen Zweck ...
    (de.comp.sys.mac.misc)