Atomic Increment Ordering: relaxed vs. seq_cst

Question 2 / 51 Correct so far: 0 (0 answered)

Snippet A

Relaxed Increment

static void incrementRelaxed(std::atomic<int>& counter, int n) {
    for (int i = 0; i < n; ++i)
        counter.fetch_add(1, std::memory_order_relaxed);
}

incrementRelaxed(counter, kIterations);
Snippet B

Seqcst Increment

static void incrementSeqCst(std::atomic<int>& counter, int n) {
    for (int i = 0; i < n; ++i)
        counter.fetch_add(1);
}

incrementSeqCst(counter, kIterations);
Shared test data (shared-setup)
constexpr int kIterations = 65536;

Which snippet is faster? (Assume x86-64)

Select the correct answer(s)