«Programmation du signal" est un terme souvent utilisé pour désigner un programme informatique qui fonctionne principalement en réponse aux signaux ou des événements générés par un changement dans l'état ou par saisie de l'utilisateur. Presque toute partie d'un système informatique, à partir d'un dispositif périphérique pour le système d'exploitation lui-même, peut générer un signal qui peut être capté par une application et ensuite traité. Dans de nombreuses formes, signal de programmation ressemble programmation événementielle. Certaines des utilisations les plus courantes de la programmation du signal sont avec des interfaces graphiques qui répondent à l'entrée d'utilisateur, les communications réseau et des programmes de bas niveau qui capturent et traitent les signaux spécifiques du système.
Un signal dans la programmation de l'ordinateur peut être définie comme un message, un événement ou une alarme, en fonction de son origine, l'architecture du système ou même la préférence du programmeur. En termes très généraux, il est un indicateur que quelque état ou un morceau de données ont changé, et il est parfois accompagné d'informations supplémentaires sur le changement qui s'est produit. Le signal peut être généré par l'utilisateur lorsqu'une touche est enfoncée, à partir de matériel tel qu'un moniteur lorsque se produit un retour de balayage vertical, ou même à partir du système d'exploitation lorsque quelque chose comme un défaut de page se produit lors de l'allocation de mémoire.
Dans une application, la programmation du signal peut prendre plusieurs types d'architectures, mais l'un des plus commun est un auditeur ou le modèle d'observateur.Dans cette méthode, un morceau de code défini par l'utilisateur peut être passée en quelque sorte à un gestionnaire de signal, généralement dans le système d'exploitation, qui appelle ensuite ce morceau de code pour traiter les signaux qui correspondent à ce que la fonction est à la recherche. Le type de signal d'une fonction peut gérer est souvent déterminée par une variable appelée un masque de signaux, de sorte que certains signaux ne sont pas transmises à des routines ne sont pas conçus pour les traiter.
Un deuxième type de programmation du signal implique d'avoir un programme qui implémente une file d'attente qui accepte les signaux entrants. Cette file d'attente est interrogé dans la boucle principale de l'exécution du programme et le programme réagit fois un signal entre dans la file d'attente. Chaque signal peut alors être triés logiquement, manipulé, ignoré ou passé à un autre processus.
Certaines difficultés peuvent surgir dans la programmation du signal lors des processus simultanés ou des applications multi-threads sont utilisés. Les complications peuvent survenir si, par exemple, deux fils distincts sont à l'écoute des signaux générés par deux dispositifs d'entrée d'utilisateur distincts, ou de deux sockets réseau. Si deux utilisateurs tentent simultanément d'apporter une modification à certaines données, les données du programme pourraient tomber hors de la synchronisation et apparaître différemment à chaque utilisateur. En utilisant une file linéaire ou la mise en œuvre des méthodes de synchronisation de threads peut aider à prévenir cette situation.