[gl-como] Programmazione
Genio del Male
ben.vighy@gmail.com
Mar 14 Mar 2006 15:43:58 CET
Carlo Filippetto wrote:
>Ciao,
>volevo chiedere un consiglio.
>
>La questione è la seguente:
>ho la necessità di leggere dalla porta seriale alcuni valori (nel mio
>caso passatti da un lettore ottico - code_reader).
>
>Ho creato un eseguibile in C che mi permette di sentire se sulla porta
>ho dei dati e poi li legge.. solo che in questo modo tutte le risorse
>del mio computer sono occupate da questo processo!
>
>Vorrei trovare un modo in cui il processo possa girare in back_ground
>fino a che non sente qualcosa sulla porta, a quel punto può anche
>prendersi tutte le priorità tanto so che in pochi secondi millesimi mi
>si libera tutto!!
>
>Sto cercando di gestire gli eseguibili tramite php, con interfaccia web
>dove faccio apparire a video quanto passa sulla seriale.
>
>Spero che abbiate come sempre dei buoni consigli
>
>P.S.
>- Questa volta lavoro sotto Winzoz (anche se in un secondo tempo dovrò
>probabilmente farne il porting).
>
>CIAO
>
>
>
>------------------------------------------------------------------------
>
>
>
>
problema di "Busy Waiting" vedo!! :-D
guarda..... che metodo usi per ascoltare sulla porta!? fai un ciclo che
continua a verificare i dati in ingresso finchè non trova dati validi e
allora comincia ad elaborare o una funzione apposita sospensiva!?
ovviamente qualcosa + simile alla prima ipostesi... se no avresti un
meccanismo + simile agli interrupt (non veri e proprio interrupt ma
l'effetto è los tesso: nn spreca risorse) che si attivoa solo quando
necessario......
cmq una buona regola è: se usi una struttura come questa:
ciclo (consdizione_di_uscita) {
if ( check_della_porta() ) {
// fai le cose del caso
}
}
modificare così:
ciclo (consdizione_di_uscita) {
if ( check_della_porta() ) {
// fai le cose del caso
}
sleep(timeout);
}
e regolare il timeout in base alla reattività che vuoi avere in elttura
della porta... oppure al risparmio di risorse:
infatti c'è proporzionalità inversa fra il tmepo del timeout della sleep
e l'utilizzo di risorse o la reattività del sistema....
per riassumere:
+ timeout ==> - reattività e - risorse occupate
- timeout ==> +reattività ma anche + risorse occupate
vedi tu! :-D io uso timeout di 333 milliseondi.... e non noto mai nessun
ritardo... ma per programmi di interfaccia visuale.... o in ogni caso
operazioni non critiche.
Ciao!!
Maggiori informazioni sulla lista
gl-como