Blackboard#

blackboard messaging pattern

Blackboard Communication Model#

An unidirectional messaging pattern based on a shared-memory key-value repository which can be modified by (for now) one writer and read by many readers. Updates and read operations are made on a key basis, not on the entire shared memory. All keys are unique and have the same shared-memory compatible type; the shared-memory compatible value types can vary, but are fixed for a specific key.

The blackboard messaging pattern is ideal for scenarios where a large number of readers are interested in a subset of the key-value pairs, such as global configuration settings adjusted at runtime or a regularly updated global state.

The pattern is not suitable for cases where large payloads shall be communicated to multiple participants (publish-subscribe) or when a bidirectional communication is required (request-response).

Mechanism#

blackboard messaging pattern

Blackboard in Shared Memory#

The blackboard messaging pattern currently allows one writer and multiple readers. These can obtain write or read permission for specific key-value pairs. The writer is then able to update the respective values efficiently, while the readers can efficiently read the latest values - without having to iterate the complete key-value-repository again.

Further Reading#

Understand Events

See how the Event messaging pattern can be used to coordinate participants.

Event
Example: Blackboard Service (Rust)

See how to set up a basic Blackboard service.

https://github.com/eclipse-iceoryx/iceoryx2/tree/main/examples/rust/blackboard
Example: Blackboard Service with Notification (Rust)

See how to set up a Blackboard service with notification.

https://github.com/eclipse-iceoryx/iceoryx2/tree/main/examples/rust/blackboard_event_based_communication