2016-03-29 4 views
0

Angenommen, Sie haben einen Elternprozess, der zwei Kinder verarbeitet.Wie wird zwischen gespaltenen Prozessen mit Semaphoren umgeschaltet?

Sie möchten, dass die drei Prozesse in der Reihenfolge (zuerst ein Kind, dann das andere Kind, dann das Eltern) etwas tun, bis eine Stoppbedingung erreicht ist.

Um diese Reihenfolge zu erreichen, müssen Semaphore verwendet werden.

Meine Frage ist, wie man zwischen den drei Prozessen wechselt. Mit anderen Worten, wie identifizieren Sie, dass ein bestimmter Prozess ausgeführt wird, und verwenden Sie die Semaphore, um sicherzustellen, dass kein Prozess zweimal hintereinander ausgeführt oder übersprungen wird. Ich verstehe, dass ein Semaphor verwendet werden kann, um zu "blockieren", bis das Signal erreicht ist, aber ich verstehe nicht, wie ich dieses Konzept verwenden kann, um meine drei Prozesse in Ordnung zu bringen.

+0

was hast du bisher probiert? Können Sie die Beispielimplementierung dieses Verhaltens teilen? – catzilla

+0

Haben Sie schon ein Semaphor in einem Produzenten-Verbraucher-Muster verwendet? Überlegen Sie, was passiert, wenn Sie drei Producer-Consumer-Warteschlangen mit Semaphoren erstellen. – nneonneo

Antwort

0

Zuerst müssen Sie einige shared memory machen. So, dass, wenn Sie etwas in diesem Speicher dann ändern, das zu allen Prozess reflektieren wird. Dann seine Zeit sem_wait(&mutex) und sem_post(&mutex) zu verwenden, um Ihr gewünschtes Ergebnis zu erhalten. Wenn Sie nicht dann erhalten, lassen Sie mich wissen, dass ich ein Codeausschnitt bereitstellen werde damit du es leicht verstehen kannst ...