Mutual Exclusion

bttf
Mausschubser
Mausschubser
Beiträge: 76
Registriert: 9. Nov 2011 14:04

Mutual Exclusion

Beitrag von bttf »

Ich verstehe nicht, warum bei dem Beispiel zu Mututal Exclusion im Foliensatz "Concurrent Programming" mit zwei boolean Variablen gearbeitet wird. Normalerweise hat man doch einen Mutex für eine Citical Section. Erscheint mir unnötig kompliziert mit enterCriticalP und enterCriticalQ zu arbeiten. Wenn man z.B. 20 Prozesse hat, die alle die gleiche Variable schreiben dürfen, müsste ich bei dem in den Folien vorgestellten "Pattern" ja mit 20 booleans arbeiten... das würde super häßlich werden :twisted:

Sowas wie das hier müsste doch auch funktionieren, oder nicht? Empfände ich persönlich als hübschere Lösung.

Code: Alles auswählen

bool enterCritical = true;

active proctype P() {
  do :: printf ("P non -critical action\n");
        atomic {
          enterCritical;
          enterCritical = false
        }
        /* begin critical section */
        printf ("P uses shared resource\n");
        /* end critical section */
        enterCritical = true
  od
}

active proctype Q() { analogous }

yourmaninamsterdam
Nerd
Nerd
Beiträge: 681
Registriert: 26. Okt 2006 14:04
Kontaktdaten:

Re: Mutual Exclusion

Beitrag von yourmaninamsterdam »

Meiner Meinung nach sind diese Variablen nicht als Semaphoren, sondern in diesem ersten Ansatz von MutEx eher als Zustandsvariablen der Prozesse gemeint, die dann genutzt werden, den wechselseitigen Ausschluss zu implementieren. Du siehst in den Folien also die Evolution von "die Prozesse machen, was sie wollen (und wir schauen uns das anhand der Variablen an)" zu "wir implementieren vernünftig ein System mit wechselseitigem Ausschluss". Die Implementierung wird sogar direkt im Anschluss revidiert und später in der Vorlesung mithilfe von atomic-Blöcken so ähnlich gelöst, wie du das vorschlägst. Ich würde in sofern nicht so viel Gehirnschmalz in solche Details der frühen Beispiele stecken.

Antworten

Zurück zu „Archiv“