12-01-2016, 03:58 PM
(11-01-2016, 10:52 PM)samuele55598@gmail.com Ha scritto: Ora nel main il loop che verifica quando è "arrivata l'ora" di una sveglia e quest'ultima deve suonare, è una funzione con un loop che controlla ogni tot di tempo se la sveglia è "pronta" insomma. Questo ciclo non mi permette di fare altro tipo impostare altre sveglie eccNon dovresti praticamente MAI E POI MAI fare ricorso ad un busy loop.
Ecco perché parlavo di eventi, basta registrare la scadenza del timer e farti notificare quando essa si manifesta. Lo puoi fare tramite il GUI toolkit o direttamente tramite il sistema operativo.
Quello che stai cercando di fare tu è un polling, ovvero il controllo continuo, che è praticamente l'opposto che aspettare l'evento senza fare niente intanto.
(11-01-2016, 10:52 PM)samuele55598@gmail.com Ha scritto: Ora mi è venuto in mente di usare i thread perchè (sicuramente sbaglio) ma voglio (a progetto finito) che ci siano tanti loop per ogni sveglia tutti in background, così posso fare altre cose.Scomodare i thread è eccessivo, alla luce delle considerazioni che ti ho appena fatto. Ma pur supponendo che tu voglia controllare il timer in maniera attiva mediante polling, nulla ti vieta di controllarli in sequenza e successivamente al controllo della coda degli eventi della GUI. Al massimo questo porterebbe ad un ritardo nell'ordine dei millisecondi, cosa più che trascurabile visto che i timer sono intesi per gli esseri umani. Se poi hai bisogno di contatori monotonici ad alta precisione ed accuratezza per fare del profiling, ma ne dubito fortemente , allora i requisiti cambiano e così la soluzione al problema.
(11-01-2016, 10:52 PM)samuele55598@gmail.com Ha scritto: Ma se i thread richiedono tutta questa esperianza (per non parlare di riuscire a implementare la GUI che immagino) credo sia meglio lasciar perdere.Il multi-threading è un'arte affascinante e pericolosa, per fortuna la puoi evitare in questo caso.
Ovviamente per qualsiasi altro dubbio possiamo discuterne su Discord.