[Development] atomic reference counting implementation
Kevin Kofler
kevin.kofler at chello.at
Sat Aug 10 14:41:21 CEST 2019
Mutz, Marc via Development wrote:
> But that's the whole point Olivier was making two years ago: ref() is
> _documented_ to be a memory barrier:
>
> https://doc.qt.io/qt-5/qatomicinteger.html#ref:
But QSharedDataPointer is NOT documented to call QAtomicInteger::ref/deref,
the documentation just talks about incrementing or decrementing reference
counts. So the exact method called is an implementation detail.
Hence, why can't we just add new QAtomicInteger::refRelaxed and
QAtomicInteger::derefRelaxed methods and use those in QSharedDataPointer
instead of plain ref and deref? It is a drop-in replacement, introduces no
code duplication, and does not change any documented behavior.
> - applications programmers can continue to use QSD and "suffer" from the
> performance drag of ordered ref(). They can also use QISP + std::atomic
> as ref-count and implement their own qIntrusiveRef/Deref to match what
> Herb and Hans recommend.
That sounds to me like a lot of unnecessary boilerplate (implementing the
qIntrusiveRef/Deref glue functions), even if you don't see the required
mixing of Qt and STL APIs as an issue. And existing projects would also have
to port their code to get the improvements.
Kevin Kofler
More information about the Development
mailing list