TL; DR: Come dovrei strutturare il mio progetto C ++ per consentire l'avvio, l'arresto e la sospensione del mio programma?
Descrizione:
Sto progettando un'applicazione che deve consentire agli utenti di avviare, mettere in pausa e interrompere l'esecuzione di un test. La stessa funzionalità di prova sarà abbastanza semplice, ma l'architettura che lo circonda è stata una sfida. Il programma è scritto su Linux, in C ++, usando QT per UI e NetBeans per l'IDE.
Il mio design di alto livello è il seguente:
- FIFO di esecuzione con ID azione. Le azioni verranno generate da un file di configurazione XML personalizzato
- All'avvio del programma, il "PC" (contatore del programma) inizierà l'esecuzione delle azioni dal FIFO, tenendo traccia dell'azione corrente e successiva
- Se viene premuto il pulsante di pausa, il PC cesserà di aumentare per consentire agli utenti di visualizzare lo stato di vari aspetti del test (si pensi a un punto di rottura)
- Se viene premuto il pulsante di avvio, il PC riprende
- Se viene premuto il pulsante stop, il PC verrà impostato su un "-1" figurativo per rappresentare non in esecuzione
Le mie domande specifiche sono:
Una logica del genere ha senso?
while notStopped
if notPaused
load action from fifo
execute action
pop
else
display paused / breakpoint data
Dove dovrebbe risiedere un'esecuzione come sopra (o revisionata)? La principale è una posizione appropriata? Un loop gigante è la best practice per questo caso d'uso?
Dove dovrebbero andare i dati "globali"? Ovviamente le variabili globali non sono un'opzione, ma come faranno tutti gli aspetti del programma a essere "messi in pausa" o "fermati"?