PDA

View Full Version : [C++] Gestione task da C Dos a Visual C++


jugo
09-10-2008, 09:58
Salve a tutti!
devo fare un porting di un programma da C sotto Dos a Visual C++ Windows per il controllo di apparecchiature medicali.
Il core del programma sono 5 task (gestione tastiera, gestione allarmi, gestione processo, ecc.) che girano insieme (tempo ciclo totale 2,5 secondi) l'esecuzione dei task è gestita da rutine in assembler, inoltre c'è un WatchDog.
Sono problematiche per me nuove. Qual'è il modo più semplice e sicuro per gestire i task in VisualC? Ho visto che nella casella degli strumenti ci sono i componenti Process (per i task) e Timer (per il Watchdog) posso usare quelli? Grazie.

sottovento
09-10-2008, 14:40
Salve a tutti!
devo fare un porting di un programma da C sotto Dos a Visual C++ Windows per il controllo di apparecchiature medicali.
Il core del programma sono 5 task (gestione tastiera, gestione allarmi, gestione processo, ecc.) che girano insieme (tempo ciclo totale 2,5 secondi) l'esecuzione dei task è gestita da rutine in assembler, inoltre c'è un WatchDog.
Sono problematiche per me nuove. Qual'è il modo più semplice e sicuro per gestire i task in VisualC? Ho visto che nella casella degli strumenti ci sono i componenti Process (per i task) e Timer (per il Watchdog) posso usare quelli? Grazie.

Non dico nulla di nuovo affermando che il Dos non era multitasking. Infatti dici che l'esecuzione dei task era (e') gestita da routine in assembler.
Ovviamente servirebbe sapere qualcosina di piu' su questo punto, anche perche' i task devono comunicare fra di loro. Come?

Siccome sei impegnato in un porting, vorresti farlo nella maniera piu' "indolore" possibile, cercando di utilizzare anche un modo di comunicazione fra processi che sia simile a quello originale.

Immagino che una architettura a thread sia quella piu' simile a quella originale: non ho sottomano l'implementazione ma posso immaginare (grazie anche ai nomi dei "gestori" che hai scritto) che queste routine in assembler siano piuttosto limitate nei servizi che possono offrire, limitandosi a rischedulare delle funzioni a mo' di thread. Posso anche immaginare che la comunicazione avvenga tramite variabili globali condivise (si usava implementare delle code) che portassero i vari "eventi" da tastiera, allarmi, processo... al "thread" principale.

Suggerimento: comincia a guardare la CreateThread() su MSDN....

PS - modifica il titolo del tuo thread, prima che lo chiudano ;)