#include #include #include #include struct Payload { int left = 0; int right = 0; }; int main() { Payload payload; std::atomic ready{false}; std::jthread producer([&] { payload.left = 6; payload.right = 7; ready.store(true, std::memory_order_release); ready.notify_one(); }); ready.wait(false, std::memory_order_acquire); const int result = payload.left * payload.right; assert(payload.left == 6 && payload.right == 7); assert(result == 42); producer.join(); std::cout << result << '\n'; }