in

¿Cómo usar el temporizador en C?

apple touch icon@2

Sí, necesitas un bucle. Si ya tiene un bucle principal (la mayoría de las cosas guiadas por eventos de GUI lo tienen) probablemente pueda colocar su temporizador en eso. Usar:

#include <time.h> 
time_t my_t, fire_t;

Luego (para tiempos superiores a 1 segundo), inicialice su temporizador leyendo la hora actual:

my_t = time(NULL);

Agregue la cantidad de segundos que debe esperar su temporizador y guárdelo en fire_t. Un time_t es esencialmente un uint32_t, es posible que debas convertirlo.

Dentro de tu bucle haz otro

my_t = time(NULL);

if (my_t> fire_t) entonces considere el temporizador disparado y haga las cosas que quiera allí. Eso probablemente incluirá restablecerlo haciendo otro fire_t = time (NULL) + seconds_to_wait para la próxima vez.

Un time_t es un método Unix algo anticuado de almacenar el tiempo como el número de segundos desde la medianoche del 1/1/1970, pero tiene muchas ventajas. Para tiempos de menos de 1 segundo, debe usar gettimeofday () (microsegundos) o clock_gettime () (nanosegundos) y tratar con una estructura timeval o struct timepec que es un time_t y los microsegundos o nanosegundos desde esa marca de 1 segundo. Hacer un temporizador funciona de la misma manera, excepto que cuando agrega su tiempo de espera, debe recordar realizar el acarreo manualmente (en el tiempo_t) si el valor de microsegundos o nanosegundos resultante supera 1 segundo. Sí, es desordenado. Ver man 2 time, man gettimeofday, man clock_gettime.

sleep (), usleep (), nanosleep () tienen un beneficio oculto. Lo ve como pausar su programa, pero lo que realmente hacen es liberar la CPU durante esa cantidad de tiempo. Sondear repetidamente leyendo la hora y comparándola con la hora finalizada (¿ya llegamos?) Quemará muchos ciclos de CPU, lo que puede ralentizar otros programas que se ejecutan en la misma máquina (y consumir más electricidad / batería). Es mejor dormir () la mayor parte del tiempo y luego empezar a comprobar la hora.

Si está tratando de dormir y trabajar al mismo tiempo, necesita hilos.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

abap workbench

SAP – Lenguaje de programación (ABAP)

gfg 200x200 min

Python | Convertir conjunto en una lista