[Development] Qt 5 types under consideration for deprecation / removal in Qt 6
Allan Sandfeld Jensen
kde at carewolf.com
Fri Aug 23 15:03:40 CEST 2019
On Friday, 23 August 2019 14:51:36 CEST Mutz, Marc via Development wrote:
> On 2019-08-23 14:31, Allan Sandfeld Jensen wrote:
> [...]
>
> > condition_variable_any::_M_mutex
>
> I didn't say _any :)
>
> > The std::conditional_variable has the same problem QWaitCondition has.
>
> I don't think so:
>
>
> https://code.woboq.org/gcc/libstdc++-v3/include/std/condition_variable.html#
> 166
>
> takes the mutex from the lock.
>
For waiting but not waking. I did note the libstdc++ non-any implementation
doesn't lock for notifying, but it remains a fundamental requirement that you
need to lock to modify the waiting queue, so I looked deeper:
So yeah, okay glibc does it, see https://code.woboq.org/userspace/glibc/nptl/
pthread_cond_signal.c.html#47 and https://code.woboq.org/userspace/glibc/nptl/
pthread_cond_common.c.html#254
It is just inherent to this kind of design that an extra lock is necessary. So
std::conditional_variable_any and QWaitCondition has two extras, where the
std::conditional_variable only has one extra mutex overhead.
Oh well. Conditions are not exactly the most efficient of multi-threading
primitives in any case.
'Allan
More information about the Development
mailing list