Résumé
L’attente active, en génie logiciel, ou polling (parfois appelée aussi « scrutation ») est une technique de programmation que les processus utilisent lorsqu'ils vérifient de façon répétée si une condition est vraie, comme l'attente d'une entrée (clavier ou autre) ou encore la libération d'un verrou. Cette technique peut également être utilisée pour mettre en attente un programme pour une durée déterminée. Cela était nécessaire sur d'anciens systèmes d'exploitation dont le matériel sous-jacent ne proposait pas de méthode spécifique pour suspendre l'exécution du flot d'instruction pendant une période déterminée. Sur les plateformes modernes proposant des horloges et plusieurs vitesses de processeur, cette forme de suspension du programme est souvent imprécise et signe de programmation naïve. L'attente active peut, par contre, être une stratégie valide dans certaines circonstances, le plus souvent dans l'implémentation des spinlocks au sein de systèmes d'exploitation conçus pour fonctionner sur des systèmes à processeurs multiples. À part ce genre de cas, les attentes actives devraient être évitées, puisque le processeur pourrait être réattribué à une autre tâche. Le code en C plus bas montre deux threads qui partagent un entier global i. Le premier thread utilise une attente active pour surveiller un changement de la valeur de i. #include #include #include volatile int i; /* i est globale, elle est donc visible par toutes les fonctions. Elle est également définie comme volatile, car sa valeur peut être modifiée d'une façon qui n'est pas prédictible par le compilateur (dans notre cas, ce sera l'autre thread qui modifiera la valeur). / / t1 utilise une attente active pour surveiller la modification de la valeur de i. */ static void f1() { while (i==0) { / On ne fait rien, à part vérifier la valeur de i */ } printf("La valeur de i a changé pour %d.\n", i); return; } static void f2() { sleep(60); / Attente de 60 secondes. */ i = 99; printf("t2 change la valeur de i à %d.
À propos de ce résultat
Cette page est générée automatiquement et peut contenir des informations qui ne sont pas correctes, complètes, à jour ou pertinentes par rapport à votre recherche. Il en va de même pour toutes les autres pages de ce site. Veillez à vérifier les informations auprès des sources officielles de l'EPFL.