PDA

View Full Version : [C o java] Intervalli di tempo non invasivi come?


giova22
28-09-2005, 15:19
Ciao

Devo fare un programmino che esegua dei determinati compiti dopo certi intervalli di tempo.

AD esempio se volevo fargli fare alcune cose usavo la funzione daly (da me creata) e così fatta:

void delay(int sec){
time_t inizio,fine;

time(&inizio);
time(&fine);

while(difftime(fine,inizio)<(double)sec)
time(&fine);

}



molto banale.

IL problema è che pur funzionamndo bene, il programma così fatto usa il 100% della cpu, infatti esegue un while continuo.

Come faccio ad esempio a fargli fare una certa cosa ad intervalli da me impostati senza usare tutto quel processore?

infatti se uso ad esempio l operazioni pianificate per fare partire un programma ad una certa ora non sta tutto il tempo ad usare la cpu.

Grazie dell aiuto

Oceans11
28-09-2005, 17:38
ciao

mi sono chiesto come fare per risolvere il tuo problema e sono giunto a 2 conclusioni... - ora bisogna vedere se sono le sole possibili -

1)
la tua...ossia cicli anche per il periodo di tempo in cui sei in 'attesa'
però sai meglio di me che così la cpu skiatta... :)

2)
usi la classe thread del package java.lang....
c'è il metodo

static void sleep(long millis) che provoca la sospensione del thread attualmente in esecuzione per il numero di millisecondi specificati nel parametro....
Purtroppo però una volta terminata la fase i cui il thread è in 'waiting'
non si ritorna nella fase di 'running' ma in quella di 'ready'....questo vuol dire che il processo è pronto per essere riprendersi il controllo della cpu...ma non è detto che lo faccia subito...dipende se ci sono altri thread in esecuzione e/o in attesa...non sarà quindi una cosa immediata...ma forse lo scarto può non interessarti + di tanto...


mi dispiace ma non mi è venuto in mente niente altro di buono.........ammesso che questo lo sia..

saluti!!

giova22
29-09-2005, 14:13
grazie mille mi sei stato di grande aiuto