Déclencher un traitement régulièrement ou ponctuellement

Il est intéressant de pouvoir déclencher l'exécution d'un code golang à un moment donné dans le futur ou à un interval régulier. La bibliothèque standard de go contient deux fonctionnalités que nous allons aborder dans cet article :

  1. Le Timer : Pour l'exécution différée.
  2. Le Ticker : Pour l'exécution périodique.

Le Timer, pour un traitement ponctuel

Un timer représente un évènement unique dans le futur. Au moment de sa création, vous indiquez au timer combien de temps vous souhaitez attendre et il vous founit en retour un canal (channel) qui sera notifié le temps venu. Voici un exemple de code :

 

Dans la fonction attendre, le Timer bloque sur le canal evenement.C jusqu'à ce qu'il reçoive une valeur indiquant que le temps est atteint. En fait, le type time.Timer est une structure composée d'un membre C qui est un canal.

Vous pourriez me dire : « mais pourquoi de pas utiliser une pause (avec time.Sleep ? ». Et bien parce que contrairement à la pause, le timer peut être annulé. Regardez cet exemple dans lequel le programme s'arrêtera qui n'affichera jamais « Le temps est arrivé » :

 

Le Ticker, pour un traitement régulier

Le Ticker sert à déclencher l'exécution d'un code golang de manière répétée et à un intervalle régulier. Le mécanisme du Ticker est un peu le même que celui du Timer : on attend l'arrivé d'une donnée sur un canal. Les Ticker peuvent également être arrêtés. Voici un exemple de mise en œuvre :

 

Nous utilisons ici l'instruction range de manière à itérer sur les valeurs du Ticker au fur et à mesure qu'elles arrivent. L'exécution de ce code retournera ce genre résultat (variation en fonction de l'heure du serveur) :

C'est l'heure 2013-12-13 22:11:03.3613859 +0100 PM
C'est l'heure 2013-12-13 22:11:03.8614064 +0100 PM
C'est l'heure 2013-12-13 22:11:04.3614372 +0100 PM

Étiquettes :   golang 
Portrait de Benjamin BALET
Benjamin BALET
Consultant APM

Retrouvez mes cooordonées

Benjamin BALET sur viadeo






Vous aimerez aussi

Gobs le format natif d'échange de données en Go

Traduction d'un article du blog officiel expliquant comment échanger des données entre deux programmes golang grâce à un format natif   Lire »

Les fonctions anonymes et les closures en go

Comment utiliser le mécanisme des fonctions anonymes et des clôtures en golang ? Explications et exemples détaillés.   Lire »

Les lois de la réflexion

Une traduction du blog officiel de golang expliquant le mécanisme de la réflexion en Go.   Lire »

Contrôle d'exécution avec for, if, else et switch

Article expliquant comment ajouter de la logique dans son programme Go avec les instructions golang de contrôle, de boucle et d'évaluation de type.   Lire »

Types, Valeurs, variables et constantes

Cet article vous permettra de comprendre une des bases de tous les langages de programmation : Types, Valeurs, Variables et constantes en go   Lire »

Commentaires

Soyez le premier à commenter cet article

Publier un commentaires

Tous les commentaires sont soumis à modération. Les balises HTML sont pour la plupart autorisées. Les liens contextuels et intéressants sont en follow.

(requis)
(requis)
(requis, mais non publié)
(recommandé si vous souhaitez être publié)