2009/2/16 Kish Shen <kisshen_at_cisco.com>: > Hi Wit, > > You can avoid writing two versions of propagator by checking if there > is a suspension in the propagator/3 code, e.g.: > Thanks, that was too simple solution for me... :) > On a more general point, if I understood you correctly, you are doing the > update_state/3 in propagator/2 in your original code because the > state can change between calling propagator/2 and executing the goals > in propagator/2, because other propagators can wake up and update the State. State or variables. State can be also calculated basing on a variables. > If this is your concern, then I am not sure if your code would avoid the > problem, because the update can happen after you do the > update_state/3. > It does not have to... :/ > To avoid this problem, you should use call_priority/2 to call > propagator/2 with a higher priority than what you are suspending your > propagators at -- so 2 in your case. In this case, you can also > miss out the initial update_state, and simplify the code a little. I am afraid you are right. This means that almost all non trivial propagators should be called via call_priority/2. This is the only way to make propagators atomic. Thank you very much for your help. Best regards -- [ Wit Jakuczun w.jakuczun_at_wlogsolutions.com ] [ WLOG Solutions http://wlogsolutions.com ]Received on Mon Feb 16 2009 - 19:12:07 CET
This archive was generated by hypermail 2.2.0 : Thu Feb 02 2012 - 02:31:58 CET