Skip to main content

Vad är signalprogrammering?

Signalprogrammering är en term som ofta används för att hänvisa till ett datorprogram som främst fungerar som svar på signaler eller händelser som genereras av viss förändring i tillstånd eller av användarinmatning.Nästan alla delar av ett datorsystem, från en perifer enhet till själva operativsystemet, kan generera en signal som kan fångas med en applikation och sedan behandlas.I många former liknar signalprogrammering händelsedriven programmering.Några av de vanligaste användningarna för signalprogrammering är med grafiska användargränssnitt som svarar på användarinmatning, nätverkskommunikation och lågnivåprogram som fångar och hanterar specifika systemsignaler.

En signal i datorprogrammering kan definieras som ett meddelande, etthändelse eller ett avbrott, beroende på dess ursprung, systemarkitekturen eller till och med programmets preferens.I de bredaste termerna är det en indikator på att en del stat eller data har förändrats, och det åtföljs ibland av ytterligare information om den förändring som har inträffat.Signalen kan genereras av användaren när en knapp trycks in, från hårdvara som en bildskärm när en vertikal återgång inträffar, eller till och med från operativsystemet när något som ett sidfel inträffar under minnesallokering.

inom en applikation,Signalprogrammering kan ta på sig flera typer av arkitekturer, men en av de vanligaste är en lyssnare eller observatörsmodell.I denna metod kan en bit av användardefinierad kod överföras på något sätt till en signalhanterare, vanligtvis inom operativsystemet, som sedan kallar den koden för att bearbeta alla signaler som matchar vad funktionen söker.Den typ av signal som en funktion kan hantera bestäms ofta av en variabel som kallas en signalmask, så vissa signaler skickas inte till rutiner som inte är utformade för att hantera dem.

En andra typ av signalprogrammering innebär att ha ett program som implementerar en kösom accepterar inkommande signaler.Denna kön undersöks i programmets huvudutförande och programmet reagerar när en signal kommer in i kön.Varje signal kan då logiskt sorteras, hanteras, ignoreras eller skickas till en annan process.

Vissa svårigheter kan uppstå vid signalprogrammering när samtidiga processer eller flertrådade applikationer används.Komplikationerna kan uppstå om till exempel två separata trådar lyssnar på signaler som genereras av två separata användarinmatningsenheter eller från två nätverksuttag.Om två användare samtidigt försöker göra en ändring av vissa data, kan programdata falla ur synkronisering och visas annorlunda för varje användare.Att använda en linjär kö eller implementering av trådsynkroniseringsmetoder kan hjälpa till att förhindra denna situation.