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



## berserkerdq2 (28. Aug 2022)

```
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?


----------



## berserkerdq2 (28. Aug 2022)

Das sind keine Hausaufgaben, ich übe.


----------



## httpdigest (28. Aug 2022)

berserkerdq2 hat gesagt.:


> ```
> void P3{
> print("h");
> down(o);  // <--- ???
> ...


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.


----------



## berserkerdq2 (28. Aug 2022)

httpdigest hat gesagt.:


> 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:

Und Beispiel:


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)


----------

