[Development] Qt 5 types under consideration for deprecation / removal in Qt 6
Thiago Macieira
thiago.macieira at intel.com
Thu May 30 20:35:38 CEST 2019
On Wednesday, 29 May 2019 08:13:51 PDT Olivier Goffart wrote:
> I think we could get rid of QThread and get along with std::thread and
> std::thread::id
> We would have to keep a std::unordered_map<std::thread::id, QThreadData>,
> but that might be a bit difficult. (What happens if we do
> QObject::moveToThread(std::thread::id), and thread was already finished.
> We can mandate that an the thread has a Qt eventloop, so we can use TLS
> destructor to clean the map. But if we still access the thread handle after
> the thread terminate, we have a problem)
NAK on using a global. This should be in a TLS object.
I wish we could use thread_local on non-POD objects. But we'd need to drop
MinGW compatibility if we did that. Can we?
> > === QMutex / QReadWriteLock -> std::*mutex* ===
>
> The implementation of QMutex, and especially QReadWrtieLock is much more
> efficient that one of most standard library.
>
> See https://woboq.com/blog/qreadwritelock-gets-faster-in-qt57.html
>
> QMutex::lock and QMutex::unlock should be made inline, and then there
> should be less problems with TSAN (I assume the problem is that TSAN does
> not "see" the atomic operation when a Qt user uses QMutex and Qt itself was
> not compiled with TSAN, and this is what you refer as work without hacks)
Agreed. The reason we kept them out-of-line was for the ability to use
Transactional Memory when it became widely available. But after 5 years after
the Haswell architecture came out, it's still not widely available -- it's
only present in Intel processors with vPro, which are usually servers or high-
end desktops.
That said, we should have an out-of-line fallback for all cases, so TSAN and
DRD work.
The other problem is:
> > === QWaitCondition -> std::condition_variable(_any) ===
>
> Yes.
Can't change QWaitCondition without changing QMutex. It's all or nothing.
--
Thiago Macieira - thiago.macieira (AT) intel.com
Software Architect - Intel System Software Products
More information about the Development
mailing list