The state machine is the main object in yasmine containing all other elements. It directly contains the root state which is always a composite state. In yasmine the state machine is the owner of all transitions.
Checking for defects before running the state machine is another feature.
yasmine provides a synchronous and an asynchronous variation of the state machine .
Synchronous state machine
The synchronous state machine runs and processes events in the thread that uses (calls) it. The user can create a thread for the state machine, if he prefers so.
This is the single-threaded variation of the state machine.
The synchronous state machine can still be used in a multi-threaded program!
The class that implements the synchronous state machine is state_machine.
Asynchronous state machine
The asynchronous state machine runs and processes events in its own thread. The events are enqueued from within a user thread but processed in the state machine's own thread.
This is the multi-threaded variation of the state machine.
The class that implements the asynchronous state machine is async_state_machine.