duda de timer

Jorge Niedbalski R. niedbalski en gmail.com
Dom Nov 25 03:40:33 CLST 2007


On 03:19 Sun 25 Nov     , Jorge Niedbalski R. wrote:
> On 12:56 Fri 23 Nov     , Ismael Diaz wrote:
> > 
> > On Fri, 2007-11-23 at 12:09 +0100, Carles Valentines wrote:
> > > Buenas,
> > > 
> > > Me gustaria saber si conoceis alguna librer?a de C/C++ que me pueda 
> > > servir para poder tener un Timer con funcionalidad de callback, es decir 
> > > algo del tipo SetTimer(tiempo, algo_que_hacer) y que sea de manera 
> > > desatendida, que corra en un hilo o proceso que no obtenga el control 
> > > del programa.
> > > B?sicamente lo que quiero es realizar una rutina sencilla cada 10 
> > > segundos sin tener que controlar activamente ese paso del tiempo, tb me 
> > > interesa poder resetear ese timer a mitad de su conteo.
> > > 
> > > Todo esto para una aplicacion BSD
> > 
> > man 2 setitimer
> 
> Con la funcion setitimer puedes definir un intervalo en sec o en usec pero no podras definir una funcion de retorno apuntada luego de la interrupcion o callback, lo que tienes que ahcer es esperar el SIGALARM que generara el timer (preferible ITIMER_REAL) capturar la signal y apuntarlo a un callback con la funcion signal (SIGALRM, callback); 
> 
Por si no fui lo suficientemente claro, la funcion setitimer directamente no puedes definir una funcion a la que saltar (callback) luego del overflow del timer (ITIMER_REAL) que define un intervalo. Lo que debes hacer es definir un timer y un intervalo con setitimer, y esperar el signal SIGALRM cuando el reloj haga OVERFLOW  con la funcion signal(SIGALRM, callback) donde el segundo argumento es una funcion  
> > 
> > Saludos.
> > -- 
> > Ismael Diaz
> 
> -- 
> Jorge Niedbalski R
> ----------------------
> niedbalski en gmail.com
> PGP KEY : 0x57915790 on public servers.
> http://niedbalski.com/~aktive/
> 

Saludos,

-- 
Jorge Niedbalski R
----------------------
niedbalski en gmail.com
PGP KEY : 0x57915790 on public servers.
http://niedbalski.com/~aktive/




Más información sobre la lista de distribución BSD