Il modo migliore è tenere traccia di ciò che è la prossima volta che aggiungi l'array, quindi dormi fino a quel momento.
Quindi, quando si aggiunge un nuovo evento all'array, è necessario decidere se verrà innescato prima o dopo rispetto al "prossimo evento" attualmente memorizzato. Quindi il loop si limita a dormire (magari svegliandosi periodicamente ogni secondo circa per stampare una diagnostica "Sto ancora funzionando").
Questo richiederà un thread che si attivi per attivare l'evento deve essere sincronizzato con un mutex, quindi può essere svegliato prematuramente se viene aggiunto un nuovo evento che sta per essere sparato prima del prossimo evento corrente. Questo thread quindi ricalcola la prossima volta, imposta il mutex e attende che venga attivato nuovamente o che si verifichi un timeout in cui il timeout sarà la giusta quantità di tempo per attendere il tempo dell'evento successivo.