Boost logo

Boost Users :

From: Andreas Huber (ahd6974-spamboostorgtrap_at_[hidden])
Date: 2008-08-02 15:46:05


Hi Igor

>> You can't, see above. Two asynchronous state machine must only exchange
>> data in
>> a, well, asynchronous manner. That is, have the requesting state machine
>> post
>> an event to the other FSM, which in turn posts the requested data in an
>> event
>> back to the requesting FSM. Of course you'll have to be careful to always
>> *copy* the data and never let both state machines access the same data
>> through
>> e.g. pointers.
>
> Lets assume, this "shared data" is defined externally to the FSMs, and
> then a ptr to the data is passed to them all (in the constructors or
> by means of an event). If this data is accessed in a thread-safe
> manner, then such a design doesn't seem to be dangerous, does it?

It depends on how long the lock is taken by each FSM. If we're just talking
lock, read/write, unlock then no I don't think you'd have any problems with
just two FSMs. The longer the lock is taken the more could shared data
access become a bottleneck and adversely affect performance.

Of course, for Tims problem (access of state-local data), this is not a good
solution as it would inevitably make the data non-local.

Regards,

-- 
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