in joy we face the storm and defy it”
— Amelia Barr
Imagine a weather monitoring system where environmental data is collected by various sensors and distributed via messages to other components for further processing.
In the code below, produce_env_measurement() represents a task that constantly produces messages containing various environmental measurements while another task (represented by process_env_measurement()) consumes them. To ensure data integrity, a Fletcher-16 checksum is appended to every message, but the application nevertheless doesn’t work reliably. Where’s the bug?