Programmieren mit C++

Borland C++

32-Bit-Programmierung

Einsatz von TCriticalSection

Wie wird TCriticalSection eingesetzt?

Frage

Beim Einsatz von TCriticalSection gibt es im Prinzip drei Fallunterscheidungen:

  • Kritischer Bereich in einer Funktion
  • Beschränkung eines Objekts auf eine Instanz
  • Beschränkung des Objektzugriffs auf einen Thread

Lösung

Ein kritischer Bereich in einer Funktion kann jederzeit durch Lock eingeleitet werden.

class myClass
{
  static TCriticalSection mutex; 

public:
   ...
   void foo();
   ...
};

void myClass::foo()
{
  TCriticalSection::Lock lock(mutex);
  ...
}

Kritscher Bereich in einer Funktion

Soll ein Objekt auf eine Instanz beschränkt sein, wobei es egal ist, in welchem Thread sich das Objekt befindet, so ist der Lock im Konstruktor unterzubringen und das Freigeben im Destruktor.

class myClass
{
  static TCriticalSection mutex;
  TCriticalSection::Lock *mutexlock;

public:
  myClass()  { mutexlock=new TCriticalSection::Lock(mutex); }
  ~myClass() { delete mutexlock; }
  ...
};

Beschränkung auf eine Instanz

Verschärfend kann ein Objektzugriff auf einen Thread beschränkt werden. Hierzu ist lediglich der Konstruktor zu erweitern.

class myClass
{
  TCriticalSection *mutex;
  TCriticalSection::Lock *mutexlock;

public
  myClass()  { 
      mutex=new TCriticalSection; 
      mutexlock=new TCriticalSection::Lock(*mutex); 
  }
  ~myClass() { 
      delete mutexlock; 
      delete mutex; 
  }
  ...
};

Objektzugriff aus einem Thread





Sachgebiet


© 2009-2012 by Alojado Publishing. Alle Rechte vorbehalten. Ausgewiesene Marken gehören ihren jeweiligen Eigentümern.
Mit der Benutzung dieser Seite erkennen Sie die Nutzungsbedingungen und die Datenschutzerklärung an. Der Betreiber übernimmt keine Haftung für den Inhalt verlinkter externer Internetseiten.
Seite erzeugt 2012-05-20 01:59:39 von textarchiv.alojado.de