Coda Condivisa

di il
3 risposte

Coda Condivisa

Salve a tutti, devo realizzare un sistema eliminacode che prevede un terminale dal quale prendere il ticket per il servizio richiesto e un altro terminale utilizzato dall'operatore per servire il cliente.
Devo implementare una coda(utilizzando una lista allocata dinamicamente) che venga aggiornata quando il cliente arriva e quando viene servito... quindi questa operazione deve essere effettuata dai due terminali.
Il mio problema è che non so come strutturare il progetto per poter condividere la coda tra i due file cpp relativi ai due terminali...

3 Risposte

  • Re: Coda Condivisa

    Ovviamente devi creare una coda FIFO (first in - first out). Questi terminali possono chiamare le funzioni della classe che gestisce la coda che principalmente saranno due. inserisci ed estrai. Come fare x gestire la coda da due file cpp. Se sei in ansi C la coda sarà un struct con dentro un puntatore a next. Le due classi conterrano solo il puntatore alla testa della coda della forma
    
    typedef struct _coda
    {
    _coda *next;
    }coda
    
    coda *head;
    
    quindi la testa della coda sarà la variabile globale da condividere tra le due classi.
    Sei invece sei i C++ e puoi usare le classi STL c'è il container std::queue che fa la stessa cosa ma meglio. Devi solo fare push e pop.
    Maggiori info quà:
    http://www.cplusplus.com/reference/stl/queue
  • Re: Coda Condivisa

    Ma il problema è che per gestire due terminali devo avere due main no? è possibile condividere la coda tra due progetti differenti? non so proprio come fare help!

    dovrei utilizzare i socket?
  • Re: Coda Condivisa

    Spiegati bene cosa sono questi terminali? Stai parlando di due eseguibili diversi che condividono un oggetto? oppure un sistema server-client? Se la prima devi usare IPC
    http://en.wikipedia.org/wiki/Inter-process_communication
    oppure WM_COPYDATA e non è facile. Se la seconda i socket e anche quì ne hai da fare.
Devi accedere o registrarti per scrivere nel forum
3 risposte