Affiliation:
1. Cheriton School of Computer Science University of Waterloo Waterloo Ontario Canada
Abstract
AbstractActors are a popular mechanism for indirectly expressing concurrency. This article examines an implementation in the concurrent dialect of C++, C++, which runs actors on shared‐memory multi‐processor computers. The C++ actor system targets 32–256+ multi‐core shared‐memory computers that form the backbone of high‐performance computing, rather than distributed actor communication or robust execution via parentage fallback used by other actor systems. Five new mechanisms are presented to achieve expressibility, robustness, high performance, and scalability of actor applications across multiple cores: explicit life time (storage management) of actors and messages, combining actors and coroutines, a forward message‐trace and backward message‐return for debugging and failures, a new promise call‐back for ask sends, and an actor implementation that inverts the actor execution‐model by decoupling actor mailboxes with high levels of sharding. Microbenchmarks compare the new actor features with CAF, Protoactor, and classic and typed Akka.
Funder
Natural Sciences and Engineering Research Council of Canada