next up previous contents index
Next: 3.7 Das Bounded Buffer Up: 3.6 Semaphore Previous: 3.6.2 Barriers mit Semaphoren

3.6.3 await mit Semaphoren

Die Implementierung von await mit Semaphoren bringt keine Verbesserung gegenüber der obigen Lösung mit Mutexen und Bedingungsvariablen. Es müssen auf jeden Fall die Anzahl der wartenden Threads gezählt werden um die richtige Anzahl der V Operationen ausführen zu können.

await B then tex2html_wrap_inline2217 end; tex2html_wrap_inline2396

        VAR sb, mb: semaphore;
            nb: INTEGER; 
        seminit(sb, 0); seminit(mb, 0); nb:=0; 

Waiter: P(mb); 
        WHILE not B DO INC(nb); V(mb); 
                       P(sb); P(mb); DEC(nb); END;   
        S1; ...; Sn;  
        V(mb); 

Tester: P(mb); 
        IF B THEN FOR i:=1 TO nb DO V(sb) END; END;
        V(mb);



parallel@rz.uni-mannheim.de
Mon Okt 28 14:38:25 PST 1996