Abstract
Message-Driven Programming style avoids the use of blocking
receives and allows overlap of computation and communication by
scheduling processes (or objects) depending on availability of
messages. Charm is a parallel programming system that uses
message-driven execution to exhibit latency-tolerance. Charm
supports objects whose methods can be triggered by remote objects
asynchronously. Such asynchronous invocation capability endows
Charm programs to tolerate communication latencies in an adaptive
manner. However, many parallel object-based applications require
the object to coordinate the sequencing of the execution of their
methods. Structured Dagger is a coordination language built on top
of Charm that supports such applications by facilitating a clear
expression of the flow of control within the object without losing
the performance benefits of adaptive message-driven execution.