[Development] What kind of airplane we want to build?
thiago.macieira at intel.com
Thu Jan 21 17:33:05 CET 2016
On Thursday 21 January 2016 10:02:41 Marc Mutz wrote:
> Having had to teach this stuff to customers when this came out in Qt 4, I
> can tell you this distinction will not register with most Qt-newbies.
> Allowing such ease of wrong API use is against my reading Qt's own design
> principles ("make it hard to use an API incorrectly"). That QThread is a
> QObject is a bug, not a featuee. It would be better as a non-QObject,
> adding QThreadWatcher a la QFutureWatcher to enable singals. In that case,
> QThread can be replaced with std::thread without much loss of generality.
It wouldn't be QThread *Watcher* because it needs slots too, like quit() and
terminate(). It would be more like QThreadManager. At that point, it's QThread
I agree with you that we should make it harder for people to misuse. With the
advent of lambdas, we can easily add a QThread::makeThread(lambda) and
deprecate completely the overriding of virtual run(). That in turn discourages
adding signals and slots.
> How we'd represent a thread if QThread was dropped is a different question,
> but easily resolved once we get there (QThreadHandle, or even re-using
> QThread, but not as a QObject subclass).
I don't see the point. We already have a threadId(). If we want to return a
handle, I would call for it to be std::thread. That would imply replacing our
backends with std::thread.
Maybe in 2020.
Thiago Macieira - thiago.macieira (AT) intel.com
Software Architect - Intel Open Source Technology Center
More information about the Development