Blackboard

Participant Writer Port Update values Service /global_config Participant Reader Port Read values Participant Reader Port Read values

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

Participant Writer Port update K1 update K2 Shared Memory Region Key-Value Repository K1 K2 V1 V2 copy K1 copy K2 Participant Reader Port Participant Reader Port

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