Προς το περιεχόμενο

Λειτουργικά Συστήματα


marsel

Προτεινόμενες αναρτήσεις

Δημοσ.

Καλησπέρα,

λοιπόν το πρόβλημα που πρέπει να λύσω είναι αυτό του κοιμώμενου κουρέα με message passing.

Έχω γράψει τον εξής ψευδο-κώδικα για τον πελάτη.

>
void customer(){

message enterCust, nextCust, nextWaitingCust;

while ( true ){

(block ->)	receive( availableCap, enterCust);

	enterCust = enterShop();

}



if( !isEmpty(standingLine) ){

	receive( standingLine, nextWaitingCust);

	send( standingLine, enterCust);

	enterCust = nextWaitingCust;

	receive( waitingLine, nextCust);

	send( waitingLine, enterCust);

	enterCust = nextCust;

}

else{

	if( !isEmpty(waitingLine) ){

		receive( waitingLine, nextCust);

		send( waitingLine, enterCust);

		enterCust = nextCust;

	}

}



receive( availableBarber, nextCust);

sitOnBarberChair( enterCust);

send( customersToHaircut, enterCust);

}

 

Οι υποθέσεις μας είναι ότι έχουμε 1 κουρείο με μέγιστη χωρητικότητα 20 (mailbox = availableCap, το οποίο γεμίζω στην main με πλήθος 20 μηνυμάτων),

και επίσης έχουμε 4 πελάτες που περιμένουν καθιστοί και οι υπόλοιποι 16 που απομένουν είναι όρθιοι.

Δεν θέλω έτοιμο τον σωστό κώδικα, αλλά να καταλάβω που μπορεί να έχω κάνει λάθος.

Ευχαριστώ για τον χρόνο σας.

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...