Code Room
Code reviewMediumcr-g237
Subject Atomicity violationsLevel Mid–Senior~25 minCommon in Concurrency interviewsIndustries Software development

Question

Review this C++ statistics accumulator shared across threads.

Two of these three updates are broken under concurrency. Which two and why?

What a strong answer looks like

Separate real bugs from style. Rank issues by severity, point at the root cause rather than the symptom, and suggest a concrete fix — specific and kind.

Talk through your review
Code to reviewcpp
struct Stats {    std::atomic<long> count{0};    std::atomic<double> sum{0.0};    long max = 0;                       // plain     void record(double x) {        count.fetch_add(1, std::memory_order_relaxed);        sum.store(sum.load() + x);      // (1)        if ((long)x > max) max = (long)x; // (2)    }};
Run or narrate your approach, then ask the coach.