Choice.busy
: Used to fence over reentrant execution of a choice- When choice is ready for execution (check
ready
method) - When
busy
:false -> true
, do the actual choice execution; execution loop actually, here when you detect busy=false, you know that theready
method got a reentrant - When
busy
:true -> false
, means reentrant, do nothing; and the current execution loop will detect this one and do the execution
- When choice is ready for execution (check
Choice
&Branch
&Processor
are all double linked list, their "list heads":Choice.branch.choice
Branch.parent
Process.child
Processor.child