PDA

View Full Version : [C] far attendere un tempo determinato ad un thread


agosteeno
02-07-2011, 15:09
Salve a tutti, avrei una domandina da farvi: sostanzialmente ho un server multithread dove c'e' il main thread che esegue un ciclo per accettare connessioni dai client. Ad ogni richiesta di connessione viene attivato un thread che gestisce questa connessione. Poi c'e' un thread che dovra' essere eseguito in certi momenti e deve fare alcune operazioni.
Il problema e' questo: questo thread deve essere attivato ogni tot secondi. Come posso fare per fare in modo che avvenga questo senza fare attesa attiva (la cosa piu' ridicola che viene in mente e far eseguire una sleep di tot secondi al thread)?

tuccio`
02-07-2011, 15:28
la sleep va benissimo

agosteeno
02-07-2011, 15:37
Scusa, ma la sleep non fa' attesa attiva? Cosi' mi ritroverei con un thread che occupa il processore per tutto il tempo

T3r4fl0ps
02-07-2011, 15:46
Io la butto li: progetto di sistemi operativi di questo anno, 3° frammento, thread match :D ? Se si, devi usare un sigalarm, imposti un timer e predisponi il thread per gestire il segnale. Se no, questo dovrebbe comunque essere un metodo valido ;)

agosteeno
02-07-2011, 15:52
Azzeccato! Stavo osservando sul man ed effettivamente dice che la sleep e' implementata con la alarm stessa, e pare nn faccia attesa attiva... Potrebbe essere un idea...

Supdario
02-07-2011, 18:54
Scusa, ma la sleep non fa' attesa attiva? Cosi' mi ritroverei con un thread che occupa il processore per tutto il tempo

No no, lo sleep (in ambiente POSIX) o Sleep (in ambiente Windows) non occupa la CPU. ;)

agosteeno
02-07-2011, 20:49
allora fa' al caso mio. Grazie!