Co je to signální programování?
"Signal Programming" je termín často používaný k označení počítačového programu, který funguje především v reakci na signály nebo události generované určitou změnou stavu nebo vstupem uživatele. Téměř jakákoli část počítačového systému, od periferního zařízení po samotný operační systém, může generovat signál, který může být zachycen aplikací a poté zpracován. V mnoha formách se programování signálu podobá programování řízené události. Některá z nejběžnějších použití pro programování signálu jsou s grafickými uživatelskými rozhraními, která reagují na uživatelské vstupy, síťovou komunikaci a programy nízké úrovně, které zachycují a zpracovávají specifické systémové signály. V nejširších smyslu je to indikátor, že se některé stav nebo kus dat změnili, a někdy je doprovázen dalšími informacemi o změně, která mádošlo. Signál může být generován uživatelem, když je klíč stisknut, z hardwaru, jako je monitor, když dojde k vertikálnímu opakování, nebo dokonce z operačního systému, když se během přidělování paměti stane něco, jako je porucha stránky.
V rámci aplikace může programování signálu převzít několik typů architektur, ale jedním z nejběžnějších je posluchač nebo model pozorovatele. V této metodě může být kus kódu definovaného uživatelem nějakým způsobem předán obslužnému lékaři, obvykle v operačním systému, který pak volá tento kus kódu ke zpracování jakýchkoli signálů, které odpovídají tomu, co funkce hledá. Typ funkce signálu, který funkce zvládne často, je určen proměnnou známou jako signální maska, takže některé signály nejsou předávány rutině, které je nekreslují.
Druhý typ programování signálu zahrnuje program, který implementuje frontu, která přijímá příchozí SIGNals. Tato fronta je dotazována v hlavní prováděcí smyčce programu a program reaguje, jakmile vstoupí signál do fronty. Každý signál pak může být logicky tříděn, manipulován, ignorován nebo předán jinému procesu.
V programování signálu mohou nastat určité potíže, když se používají souběžné procesy nebo více vláknové aplikace. Komplikace mohou nastat, pokud například dvě samostatná vlákna poslouchají signály generované dvěma samostatnými vstupními zařízeními nebo ze dvou síťových zásuvek. Pokud se dva uživatelé současně pokusí provést změnu některých dat, mohla by data programu vypadnout ze synchronizace a každý uživatel se objevit jinak. Použití lineární fronty nebo implementace metod synchronizace vláken může pomoci zabránit této situaci.