boost::statechart を使用して実装された 2 つのステートチャート (FSM_A と FSM_B) があります。
FSM_B で遷移をトリガーするために、FSM_A からのイベントを処理しても安全ですか?
2 つの async_state_machine を使用する必要がありますか? それとも、一般的な最も外側の状態ですか?
次に例を示します。
struct FSM_B;
struct FSM_A : sc::state_machine<FSM_A, InitialStateA>
{
FSM_B* pB;
};
struct FSM_B : sc::state_machine<FSM_B, InitialStateB>
{};
struct InitialStateB : sc::simple_state<InitialStateB, FSM_B>
{
typedef sc::transition< EV_CrossEvent, InitialStateB > rections;
};
struct InitialStateA : sc::simple_state<InitialStateA, FSM_A>
{
InitialStateA()
{
context<FSM_A>().pB->process_event( EV_CrossEvent() );
}
};
int main()
{
FSM_B b;
FSM_A a;
a.pB = &b;
a.initiate();
b.initiate();
return 0;
}