Skip to main content

Hva er signalprogrammering?

Signalprogrammering er et begrep som ofte brukes til å referere til et dataprogram som først og fremst fungerer som svar på signaler eller hendelser generert av en viss endring i tilstand, eller av brukerinngang.Nesten noen del av et datasystem, fra en perifer enhet til selve operativsystemet, kan generere et signal som kan fanges opp av en applikasjon og deretter behandles.I mange former ligner signalprogrammering hendelsesdrevet programmering.Noen av de vanligste bruksområdene for signalprogrammering er med grafiske brukergrensesnitt som svarer på brukerinngang, nettverkskommunikasjon og programmer på lavt nivå som fanger opp og håndterer spesifikke systemsignaler.

Et signal i dataprogrammering kan defineres som en melding, enHendelse eller et avbrudd, avhengig av dens opprinnelse, systemarkitekturen eller til og med programmererens preferanse.I de bredeste vilkår er det en indikator at noen tilstand eller data har endret seg, og det er noen ganger ledsaget av ytterligere informasjon om endringen som har skjedd.Signalprogrammering kan ta på seg flere typer arkitekturer, men en av de vanligste er en lytter eller observatørmodell.I denne metoden kan et stykke brukerdefinert kode sendes på noen måte til en signalbehandler, vanligvis i operativsystemet, som deretter kaller det kodestykket for å behandle alle signaler som samsvarer med det funksjonen søker.Den typen signal en funksjon kan håndtere ofte bestemmes av en variabel kjent som en signalmaske, så noen signaler blir ikke ført til rutiner som ikke er designet for å håndtere dem.

En andre type signalprogrammering innebærer å ha et program som implementerer en køsom godtar innkommende signaler.Denne køen blir spurt i hovedutførelsessløyfen til programmet, og programmet reagerer når et signal kommer inn i køen.Hvert signal kan da logisk sorteres, håndteres, ignoreres eller sendes til en annen prosess.

Det kan oppstå noen vanskeligheter i signalprogrammering når samtidige prosesser eller multitreftede applikasjoner brukes.Komplikasjonene kan oppstå hvis for eksempel to separate tråder lytter etter signaler generert av to separate brukerinngangsenheter, eller fra to nettverkssokkler.Hvis to brukere samtidig prøver å gjøre en endring av noen data, kan programdataene falle ut av synkronisering og vises annerledes enn hver bruker.Å bruke en lineær kø eller implementere trådsynkroniseringsmetoder kan bidra til å forhindre denne situasjonen.