Introduction
Messaging-Cells is:
-
A personal project. Not alpha (usable) yet.
-
A software library.
-
A sublanguage of c++ as a DSL .
-
A minimalistic asynchronous messaging aproach to concurrency and parallelism.
-
Free Software and Open Source Software with a GNU C/C++ license.
-
Developed to work over pthreads and to generate
Verilog code for the user's running pthread model.
-
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
-
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.
-
No locks at all for synchronization (no mutexes, no semaphores, etc). Like the
Actor Model.
-
Asynchronous messaging. Like the Actor Model.
-
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.