Koncový stroj řízený událostmi - Event-driven finite-state machine
P ≟ NP | Tento teoretická informatika –Vztahující se článek je pahýl. Wikipedii můžete pomoci pomocí rozšiřovat to. |
v výpočet, a konečný stavový stroj (FSM) je událost řízena pokud je přechod z jednoho stavu do druhého spuštěn pomocí událost nebo a zpráva. To je v rozporu s původem teorie rozebrání pojmu stroj s konečným stavem, kde je stroj popsán jako konzumující postavy nebo žetony.
Tyto stroje jsou často implementovány jako vlákna nebo procesy, které spolu komunikují jako součást větší aplikace. Například telekomunikační protokol je většinu času implementován jako stroj s konečným stavem řízený událostmi.
Příklad v C
Tento kód popisuje stavový automat pro velmi základní autorádio. Je to v podstatě nekonečná smyčka, která čte příchozí události. Stavový automat má pouze 2 stavy: režim rádia nebo režim CD. Akce je buď a změna režimu z rádia na CD tam a zpět, nebo přejít na další (další předvolba pro rádio nebo další skladba pro CD).
/********************************************************************/#zahrnout <stdio.h>/********************************************************************/typedef výčet { ST_RADIO, ST_CD} STÁTY;typedef výčet { EVT_MODE, EVT_NEXT} UDÁLOSTI;UDÁLOSTI readEventFromMessageQueue(prázdnota);/********************************************************************/int hlavní(prázdnota){ / * Výchozí stav je rádio * / STÁTY Stát = ST_RADIO; int číslo stanice = 0; int číslo skladby = 0; /* Nekonečná smyčka */ zatímco (1) { / * Přečtěte si další příchozí událost. Obvykle se jedná o blokovací funkci. * / UDÁLOSTI událost = readEventFromMessageQueue(); / * Přepnutím stavu a události provedete správný přechod. * / přepínač (Stát) { případ ST_RADIO: přepínač (událost) { případ EVT_MODE: / * Změnit stav * / Stát = ST_CD; přestávka; případ EVT_NEXT: / * Zvyšte číslo stanice * / číslo stanice++; přestávka; } přestávka; případ ST_CD: přepínač (událost) { případ EVT_MODE: / * Změnit stav * / Stát = ST_RADIO; přestávka; případ EVT_NEXT: / * Přejít na další skladbu * / číslo skladby++; přestávka; } přestávka; } }}
Viz také
Další čtení
- Peatman, John B. (1977). Mikropočítačový design. New York: McGraw-Hill, Inc. ISBN 0-07-049138-0.
- Brookshear, J. Glenn (1989). Teorie výpočtu: formální jazyky, automaty a složitost. Redwood City, Kalifornie: Benjamin / Cummings Publish Company, Inc. ISBN 0-8053-0143-7.