|
Boost Users : |
Subject: Re: [Boost-users] Statechart problem
From: Andreas Huber (ahd6974-spamboostorgtrap_at_[hidden])
Date: 2009-03-25 12:34:01
> I guessed that was the problem indeed I followed the event go pushed into
> the event queue but it miraculously disappears somewhere very strange.
It doesn't disappear. It's simply held in the internal queue until you call
process_event() the next time. However, as I said before it's not a good
idea to use post_event this way.
> If I would make an event which encapsulates the message I would still
> need to send it from another thread and then I could only use the
> statemachine.process_event( EvEvent() ) mechanism. I tried that and the
> behavior was not exactly what I needed. The calling function would not
> leave the process_event method and hold op the system.
state_machine is not thread-safe and, more importantly, not reentrant, as
documented here:
http://www.boost.org/doc/libs/1_38_0/libs/statechart/doc/tutorial.html#AsynchronousStateMachines
So both of the approaches you tried are dangerous, to say the least.
> Maybe I should start thinking about rewriting the code to use the
> asynchronous_state_machine.
Yes, that sounds like a good idea. The usage of asynchronous_state_machine
is very different from the one of state_machine, so don't hesitate to post
here if you run into any problems.
HTH,
-- Andreas Huber When replying by private email, please remove the words spam and trap from the address shown in the header.
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net