On Mon, 5 Jul 2021 08:33:21 +0000 Ruifeng Wang <ruifeng.w...@arm.com> wrote:
> > > > > > One simple example: increment a counter atomically. > > > > __atomic_fetch_add(&counter, 1, __ATOMIC_RELAXED); or > > > > __atomic_add_fetch(&counter, 1, __ATOMIC_RELAXED); > > > > I really hate how atomics are "documented" in GCC doc. > > For instance, it doesn't say what is returned (old or new value) in above > > functions. > > > Returns are described as "the result of the operation" and "the value that > had previously been in *ptr". > It can be more concise. Since English language parses left to right, the function name seem really obvious to me. __atomic_fetch_add returns the result before the add, and __atomic_add_fetch returns the result after the add. The one non-obvious question is which way is faster if the result is not being used?