Für eine Hausaufgabe muss ich das folgende Szenario programmieren. Dies wird mit Semaphoren unter Verwendung von BACI (das ist C--)Semaphore und gleichzeitige Programmierung
Es gibt 2 Unisex-Toiletten, die jeweils 4 Personen halten können. Da es sich um Unisex handelt, können nur Menschen gleichen Geschlechts gleichzeitig auf der Toilette sein und FIFO ist nicht wichtig. Ich habe den grundlegenden "Algorithmus" in meinem Kopf, um 4 Männer und 4 Frau für 1 Toilette zu behandeln. Aber ich weiß nicht, wie ich das programmieren soll. Jede Hilfe würde sehr geschätzt werden. Hier ist was ich habe.
Woman:
Check to see if there are any men in the restroom. If so "wait".
If no men check to see if there are 4 people. If so "wait".
If no men and not 4 use restroom. When leaving signal there is a vacancy.
If last woman signal the men if they are waiting if not signal the woman.
Man:
check to see if there are any woman in the restroom. if so "wait"
If no woman check to see if there are 4 people. If so "wait".
If no woman and not 4 use restroom. when leaving signal there is a vacancy.
if last man signal the women if they are waiting if not signal the men.
Diese zusätzlichen Anweisungen wurden
bereitgestelltVerwenden zufällige FOR-Schleifen den Lauf der Zeit an den entsprechenden Stellen zu simulieren. Dies kann leicht durch die Verwendung einer Delay-Funktion erfolgen:
void Delay (void) { int i; int DelayTime; DelayTime = random (DELAY); for (i = 0; i < DelayTime; i++): }
wo const int DELAY = eine Zahl von 10 bis 100
- Drucken und Format Ausgabe schön und Drucknachrichten in einer Weise, dass durch das Lesen die Ausgabe, kann man die Ausführungsreihenfolge verfolgen.
- Legen Sie die Prozesse für immer in Schleife fest, und verwenden Sie die Steuerung C (oder Steuerumbruch), um Ihr Programm zu stoppen.
Ist es optimal sein müssen? –
Nein. Aber es kann nicht verhungern. Also müssen Männer und Frauen die Toilette ziemlich benutzen. – Jen
Ich bin mir nicht sicher, ob du wegen des Hungers besorgt bist, aber ich bin mir ziemlich sicher, dass dein Algorithmus ein Hungerproblem hat. Stellen Sie sich den Fall vor, in dem ein Mann auftaucht, während eine Frau bereits im Badezimmer ist, und ein stetiger Strom von Frauen immer wieder auftaucht, damit das Badezimmer niemals leer wird. –