libretto
libretto copied to clipboard
Concurrent tree
Implement a tree that supports modifications in different branches concurrently, i.e. update in one branch is not blocked until an update in a different branch completes. Mutual exclusion is needed only along the common path in the tree - as soon as the paths diverge, updates can occur concurrently.
Each node is an active entity (actor, agent) that communicates with its parent and children.
A node may signal completion to its parent.
A node has to listen concurrently (race) for communication from its parent and all children.
Use in Pollable.subscribeByKey
, so that dispatch of a value for key k2
is not blocked until dispatch of a previous value for key k1
is complete.