¿Cómo se le indicaría a una computadora que llame a una función una vez que se alcanza un cierto tiempo?

Las respuestas actuales se relacionan con las funcionalidades sin procesar del temporizador del sistema operativo, pero me gustaría agregar que en muchos lenguajes de programación de alto nivel / marcos que lo acompañan hay mecanismos incorporados que aprovechan las funciones de nivel inferior y las integran Forma “fluida” e integral al lenguaje de programación. Estos mecanismos difieren entre los lenguajes de programación, por lo que ninguna respuesta satisfaría esta pregunta.

Para Objective-C, tal llamada se vería así:

[self performSelector: @selector (myFunctionName 🙂 withObject: myObject afterDelay: 0.3f]; // retraso en segundos, doble

Algunos idiomas requerirán un puntero a una función y una duración / fecha de retraso para activar la función. Muchos idiomas también tienen bloqueos de cierre / finalización y pueden permitir el registro de cierres ad-hoc para ejecutarse en el momento deseado / después de un retraso deseado.

Se debe recordar que los lenguajes que manejan la memoria de formas más anticuadas pueden requerir una atención escrupulosa para retener / liberar estados y considerar la seguridad del hilo cuando se trata de llamadas asincrónicas. Asegúrese de saber en qué hilo se ejecutará la función retrasada y en qué estado estarán los objetos / instancias que esté utilizando una vez que se llame a la función retrasada.

Depende del sistema operativo.

Para mí, usaría la llamada al sistema de alarma (2). Establece un temporizador que generará un SIGALRM para el proceso cuando expire el temporizador. Cuando el controlador de señal capta la señal, puede llamar a la función que desee.

Ahora, si desea múltiples funciones diferentes … entonces necesita implementar (o ubicar) una biblioteca que ordene los eventos de manera que el menor tiempo restante sea siempre el primero, y entre / elimine entradas en una cola de eventos para que las diversas funciones obtengan llamado en el momento adecuado.

Un lugar para buscar dicha biblioteca sería en algunos juegos de código abierto, o un libro sobre técnicas de juego.

¿Qué marco estás usando? En Windows, tiene tareas programadas. En Unix, tienes cron.

si en Linux tienes que usar crontab