2011-05-21 9 views
6

¿Es posible llamar a una función en un momento específico en C++? Por ejemplo, me gustaría lanzar la función doIt() cuando number_of_elapsed_milliseconds_since_application_start = x.¿Cómo puedo iniciar una función en un momento específico en C++?

Una solución multiplataforma sería ideal.

+0

lanzar nuevo hilo. 'sleep (number_of_elapsed_milliseconds_since_application_start); doit(); ' –

Respuesta

3

En C++ puro probablemente no, necesitará algún código específico del sistema operativo. Pero puede usar un contenedor de sistema operativo independiente de la plataforma, como Qt (aunque esto podría ser un poco exagerado para su problema bastante simple).

EDIT: Lo más simple que puede hacer es bloquear activamente el programa en un bucle, que constantemente sondea la hora actual, hasta que se alcanza la fecha límite, pero probablemente no sea una solución muy útil. Entonces, sin hilos o algún temporizador controlado por eventos (como todo sistema operativo debería tener) no llegará muy lejos.

+0

Creo que todos los sistemas operativos principales tienen la función' sleep', que es realmente todo lo que necesita para un código no estándar. –

+0

@MooingDuck Bueno, por supuesto con la llegada de C++ 11, mi respuesta no tiene mucho sentido. –

3

Cree un hilo, póngalo en modo reposo hasta ese momento, y después de la suspensión, haga que ejecute esa función.

+2

+1, aunque me gustaría señalar que no estamos utilizando el sistema operativo en tiempo real, por lo que el hilo no se activará exactamente a la hora programada, estará un poco apagado, cuánto dependerá de la carga actual de la máquina. –

Cuestiones relacionadas