Kritische Abschnitte in Borland C++ Builder 5

Speedfreak23

Grünschnabel
Hallo

ich habe mal eine wichtige Frage. Wer kann mir denn mal sagen wie ich im Borland C++ Builder 5 einen Kritischen Abschnitt erstellen kann. Habe 2 threads die beide auf eine Ressorce zugreifen. Ich habe zwar die Idee es mit einer Semathore zu versuchen aber ein Kritischer Abschnitt währe besser da dieser Abschnitt nicht unterbrochen werden darf... Kann mir jemand helfen... Codeabschnitte währen am hilfreichsten. Außerdem weiß ich nicht welche header benutzt wird.
 
Hallo,
Ich habe zwar die Idee es mit einer Semathore zu versuchen aber ein Kritischer Abschnitt währe besser da dieser Abschnitt nicht unterbrochen werden darf.
Hallo der Begriff "Kritischer Abschnitt" ist ein theoretischer Begriff...
Praktisch lösen tut man dies durch wechselseitigen Ausschluss.
Es gibt 4 Bedingungen für eine gute Lösung des wechselseitigen Ausschlusses:
1. Keine zwei Threads dürfen gleichzeitig in ihren kritischen Abschnitten sein.
2. Es dürfen keine Annahmen über Geschwindigkeit und Anzahl der CPUs gemacht werden.
3. Kein Thread darf außerhalb eines kritischen Abschnitts einen anderen Thread am Eintritt in einen kritischen Abschnitt hindern.
4. Jeder Thread muss die Möglichkeit haben, in endlicher Zeit in seine kritischen Abschnitte eintreten zu dürfen.

Lösen kannst du dies indem du die von dir angesprochenen Semaphore z.B.
verwendest... Mutexe (binäre Semaphore) wären auch eine Möglichkeit:

Hier mal ein bisl Pseudocode für die Lösung mittels binärer Semaphore:

Code:
Semaphore s = 1;

procedure Thread
begin
  while(true)
  begin
     down(s);
     criticalSection();
     up(s);
  end
end

Gruß

RedWing
 

Neue Beiträge

Zurück