C'est toujours un peu embêtant d'utiliser les signaux qui sont une ressource rare, commune à tout le système et délicate à utiliser. Comme vous le soulignez, le thread de destination n'est pas facilement défini.
N'y a t'il pas une solution beaucoup plus simple avec :
struct timespec periodic_time ;
clock_gettime(CLOCK_REALTIME, &periodic_time ) ;
while (1) {
periodic_time.tv_nsec += PERIOD_NANOSEC ;
periodic_time.tv_sec += PERIOD_SEC ;
/* ajouter du code pour gérer la retenue */
clock_nanosleep (CLOCK_REALTIME, TIMER_ABSTIME, &periodic_time , NULL);
/* travail de la tâche */
}
Il y a peut être aussi des subtilités entre CLOCK_REALTIME et CLOCK_MONOTONIC.
C'est toujours un peu embêtant d'utiliser les signaux qui sont une ressource rare, commune à tout le système et délicate à utiliser. Comme vous le soulignez, le thread de destination n'est pas facilement défini.
N'y a t'il pas une solution beaucoup plus simple avec :
struct timespec periodic_time ;
clock_gettime(CLOCK_REALTIME, &periodic_time ) ;
while (1) {
periodic_time.tv_nsec += PERIOD_NANOSEC ;
periodic_time.tv_sec += PERIOD_SEC ;
/* ajouter du code pour gérer la retenue */
clock_nanosleep (CLOCK_REALTIME, TIMER_ABSTIME, &periodic_time , NULL);
/* travail de la tâche */
}
Il y a peut être aussi des subtilités entre CLOCK_REALTIME et CLOCK_MONOTONIC.