Was ist der Unterschied zwischen Semaphoren nutzen und mit Synchronisationsmechanimus? (Mit Pseudocode)?

berserkerdq2

Bekanntes Mitglied
1661700904264.png
Java:
semaphore S1=0;
semaphore S2=0;

void P1{
print("s);
up(S1);
print("e");
print("m");
}

void P2{
print("a");
down(S1);
print("p");
up("S2");
}

void P3{
print("h");
down(o);
down("S2");
print("r"); }


Wäre das korrekt? Und wie würdet ihr die (II) lösen? Was meint man mit Synchronisationsmechanismus, hätte die (ii) eigentlich ähnlich gelöst?
 
Beste Antwort
Java:
void P3{
print("h");
down(o);  // <--- ???
down("S2");
print("r"); }
Was soll denn down(o); sein? Die Semaphore o hast du nirgends deklariert.
Ich vermute mal, dass da eigentlich stehen sollte: print("o");.
In diesem Fall wäre diese Lösung für (i) wohl korrekt, ja.
Du bist aber auch nicht immer konsistent in der Referenzierung einer Semaphore. Manchmal ist es bei dir eine "Zeichenkette" und manchmal der Name der Semaphore selbst. Ist vermutlich für die Lösung der Aufgabe selbst egal, aber du solltest hier vermutlich schon konsistent sein.

httpdigest

Top Contributor
Java:
void P3{
print("h");
down(o);  // <--- ???
down("S2");
print("r"); }
Was soll denn down(o); sein? Die Semaphore o hast du nirgends deklariert.
Ich vermute mal, dass da eigentlich stehen sollte: print("o");.
In diesem Fall wäre diese Lösung für (i) wohl korrekt, ja.
Du bist aber auch nicht immer konsistent in der Referenzierung einer Semaphore. Manchmal ist es bei dir eine "Zeichenkette" und manchmal der Name der Semaphore selbst. Ist vermutlich für die Lösung der Aufgabe selbst egal, aber du solltest hier vermutlich schon konsistent sein.
 
Beste Antwort

berserkerdq2

Bekanntes Mitglied
Was soll denn down(o); sein? Die Semaphore o hast du nirgends deklariert.
Ich vermute mal, dass da eigentlich stehen sollte: print("o");.
In diesem Fall wäre diese Lösung für (i) wohl korrekt, ja.
Du bist aber auch nicht immer konsistent in der Referenzierung einer Semaphore. Manchmal ist es bei dir eine "Zeichenkette" und manchmal der Name der Semaphore selbst. Ist vermutlich für die Lösung der Aufgabe selbst egal, aber du solltest hier vermutlich schon konsistent sein.
Sorry hast recht, es müsste print("o") sein, vielen Dank :)!

Weißt Du zufällig was die mit (ii) meinten, mit diesem Synchronisation?

In der Folie haben wir dies stehen:
1661711902746.png
Und Beispiel:
1661711924679.png

Ich verstehe jedoch nicht, inwiefern sich diese Synchronisation zu das von (i) unterscheidet, mache doch eigentlich das gleiche? Nur hier hat man irgendwie noch sowas iwe full und empty (für was auch immer)
 

Neue Themen


Oben