A system and method of synchronizing at least one variable such as a counter
among
a network of distributed computers where the computers communicate via asynchronous
message passing. The distributed computers are organized as nodes in a tree. Each
computer in the tree is capable of functioning as a parent, child, or both. For
each variable to be synchronized, each parent receives a contribution from a child
which includes contributions from any children of the child and returns other contributing
values to the child. The child then updates the local value of the variable with
the returned contributing values. The returned contributing values include contributions
to the variable from all computers in the tree other than the child and other than
any children subordinate to the child in the tree. Each computer can have multiple children.