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