On Sunday, 28 February 2021 07:05:47 PST Hans-Peter Nilsson wrote:
> On Fri, 26 Feb 2021, Thiago Macieira via Gcc-patches wrote:
> > ints can be used in futexes. chars can't.
>
> Shouldn't that be an atomic type instead of a bare int then?
There are a couple of atomic_refs:
using __atomic_phase_ref_t = std::__atomic_ref<__barrier_phase_t>;
using __atomic_phase_const_ref_t = std::__atomic_ref<const
__barrier_phase_t>;
And _M_phase, despite being non-atomic, is never accessed without the
atomic_ref, aside from the constructor. Both arrive() and wait() start off by
creating the atomic_ref.
But I confess I don't understand this code sufficiently to say it is correct.
I'm simply saying that waiting on unsigned chars will not use a futex, at
least until https://lkml.org/lkml/2019/12/4/1373 is merged into the kernel.
--
Thiago Macieira - thiago.macieira (AT) intel.com
Software Architect - Intel DPG Cloud Engineering