PDA

View Full Version : [C] - IPC: code di messaggi


cn73
07-04-2004, 14:12
Stavo affrontando un esercizio sulle code di messaggi .
Un demone Cuoco resta in ascolto su una coda di messaggi di eventuali richieste inviate sulla stessa coda da un Cliente (+ clienti anche contemporaneamente).
Il cuoco riceve la richiesta si forca per creare un Cuoco Figlio che prepara il piatto e lo mette sulla coda di messaggi, e solo il Cliente che aveva effettuato quella richiesta deve ritirarlo.. Poi il cuoco Padre ritorna immediatamente in attesa di altre richieste.


Avevo inizialmente pensato di mettere il cuoco padre in ascolto di tutti i messaggi presenti sulla coda (type =0) e di fare inviare al cliente "prepara" un messaggio sulla coda settando il type col proprio pid, in maniera che solo lui potese riceverlo. Però mi sono accorto che questa soluzione non funziona, perchè
essendo il cuoco padre in ascolto di tutti i messaggi, potrebbe intercettare prima del Cliente il messaggio messo sulla coda dal Cuoco Figlio che ha preparato il piatto...e si avrebbe, oltre alla morte per fame del Cliente, anche un loop fra Cuoco Padre e Cuoco Figlio...

Avevo pensato allora di mettere il Cuoco Padre in ascolto di un determinato tipo di messaggio (type = MIO_TIPO) e fare si che il Cliente mettesse sulla coda un messaggio di questo specifico tipo. In aggiunta il Cliente aggiunge in fondo al messaggio il proprio pid. Sarà poi compito del Cuoco ricavare dal messaggio il
piatto e il pid e generare un Cuoco figlio che metta sulla coda un messaggio con type=pid così che solo il Cliente con quel pid possa riceverlo.

Voi cosa ne dite? C'era una soluzione + intelligente?
Il codice C è scritto decentemente?

Allego i listati di cuoco e del cliente.

cionci
07-04-2004, 16:24
Sinceramente non ho esperienza con questo genere di IPC sotto unix/linux...comunque mi sembra scritto tutto bene...e molto leggibile... Logicamente mi torna tutto...anche io avrei usato una soluzione del genere...