Mindroid is an open-source messaging and concurrency framework inspired by Google's Android operating system.

Non-Blocking Code

In many situations applications need to trigger some kind of long running operations. In such cases it is highly undesirable to block the executing thread or task. It is better to pass the operation to a worker thread that will asynchronously execute it in a dedicated thread/task and inform the application about possible results back in the application thread context.

Proven Concurrency Design for Embedded Systems

Mindroid supports this kind of thread/task interaction out of the box together with convenient extras such as delegates and closures. Following proven patterns and protocols from Android, Mindroid makes it possible to write responsive, non-blocking multi-threaded applications that do not suffer from deadlocks or race-conditions.

Implicit Synchronization

Communicating between multiple threads or tasks usually requires locking. Mindroid takes care of this under the hood. It allows you to structure your system in a way that makes it absolutely unnecessary to use explicit locking mechanisms thus greatly simplifying otherwise error prone code.

Communicate using Messages

Client code and service code becomes nicely decoupled by only using message passing for communication:

virtual void handleMessage(const Message& msg)
{
    switch (msg.what)
    {
    case EVENT_ID_A:
        // do your stuff
        break;
    ...
    }
}
...

The handleMessage code is executed in the context of the receiver and therefore does not require any locking.