4 research outputs found

    Coordinating multicore computing

    Get PDF

    interActors: A Model for Supporting Complex Communication in Concurrent Systems

    Get PDF
    In concurrent systems, such as multi-core computers, parallel systems, cloud computing systems, and systems involving mobile devices, processes interact with each other. Protocols for interactions among processes are increasingly complex and diverse, which is in part responsible for making programming of concurrent systems difficult. Particularly, in a concurrent program, the code for communication protocols often intermixes with the code for its functional behaviors, compromising modularity and reusability. There is a growing body of work on separating communication concerns of processes from their functional concerns. Although they achieve some degree of separation, they have some disadvantages. For example, the number of communication participants is fixed in some approaches, or in other approaches, communication mechanisms, such as for establishing the initial rendezvous for communication participants is left to the processes. In other words, existing approaches either offer static protocols that cannot handle dynamically evolving number of participants in interactions, or offer complex initialization steps that are left mixed with functional concerns. I propose interActors, a model for supporting complex communications in concurrent systems. I treat a communication as a first-class object which consists of outlets, through which processes can connect to it, and handlers, which are responsible for handling communication logics. Outlets establish a boundary between communications and processes in an application. New outlets can be created if necessary, to handle dynamically changed communication patterns at run-time. We say communications are self-driven because they have outlets and handlers that are active and therefore they can move interactions forward. More complex communications can be constructed by composing simpler communications. Operational semantics and compositional semantics are developed by extending the Actor model of concurrency with support for complex communication. A prototype implementation is developed using Scala and Akka actor library. With the intention of restricting arbitrarily complex code in communications, I developed Communication Specification Language (CSL), which excludes loops from communications and only allows a small set of statements and expressions. interActors are evaluated using case studies and comparison with Reo, a leading coordination model and language. The evaluation shows that interActors offer advantages in terms of programmability, reusability, and modularity
    corecore