Messaging-Cells Library

Introduction

Messaging-Cells is:

  1. A personal project. Not alpha (usable) yet.
  2. A software library.
  3. A sublanguage of c++ as a DSL .
  4. A minimalistic asynchronous messaging aproach to concurrency and parallelism.
  5. Free Software and Open Source Software with a GNU C/C++ license.
  6. Developed to work over pthreads and to generate Verilog code for the user's running pthread model.
  7. Inspired by the ideas of the biological cell communication, the Actor Model, the Concurrent object-oriented programming paradigm, and the MPI-2 standard.

The library is just a personal project of a modeling library for concurrent algorithms with many concurrent pieces of software (cells).

The motivation for this software is to have a base library to implement a parallel algorithm for Ben-Jose SAT Solver.

Status

Not alpha yet. Working on the DSL and the generation of verilog code. This means the whole code base is very unstable.

General features so far

  1. Deterministic behaviour. No indeterminism. Unlike the Actor Model. For a any pair of cells Cell_A and Cell_B:
    • A message sent by Cell_A is always received by Cell_B only once.
    • Messages are always received by Cell_B in the same order they are sent by Cell_A.
    • Message disposal is handled by the system and the user cannot modify it once it has been sent.
  2. No locks at all for synchronization (no mutexes, no semaphores, etc). Like the Actor Model.
  3. Asynchronous messaging. Like the Actor Model.
  4. Unlike the Actor Model, Messaging-Cells has a global state meaning it is a deterministically debuggable model.

Code

The source code is available in the github repository.