[Development] What kind of airplane we want to build?
Bubke Marco
Marco.Bubke at theqtcompany.com
Thu Jan 21 10:37:36 CET 2016
On January 21, 2016 1:28:58 AM Marc Mutz <marc.mutz at kdab.com> wrote:
> On Wednesday 20 January 2016 21:52:49 Thiago Macieira wrote:
>> On Wednesday 20 January 2016 21:08:07 Pau Garcia i Quiles wrote:
>> > Replacing QThread with std::thread? Please don't.
>>
>> Unlike the containers or even futures/promises vs QtConcurrent, we can
>> easily argue that QThread provides a lot more functionality than
>> std::thread. In just one word: signals.
>
> What happened to "you're doing it wrong!"? :) AFAIU that blog post, you're
> supposed to use the signals of QObjects living in that thread, not the QThread
> itself.
>
> And that's perfectly possible with std::thread, too:
>
> auto po = new ProcessingObject();
> connect(po, ...);
> po->moveToThread(nullptr); // enable "pulling" moveToThread()
> auto t = std::thread([po, gui = QThread::currentThread()]() {
> QEventLoop loop;
> po->moveToThread(QThread::currentThread());
> connect(po, ..., &loop, &QEventLoop::quit);
> loop.exec();
> po->moveToThread(gui);
> // or: delete po;
> }
>
> Am I missing something?
The question is if you really want an event loop here. Mostly I want a command queue where I can prioritize and merge the commands. I want to poll for cancel commands without much overhead and it should support move only types.
I really think we should step back and look at the broader picture before we apply our tools.
>> We should provide QThread::makeThread() taking a lambda and some other
>> niceties, though.
>
> --
> Marc Mutz <marc.mutz at kdab.com> | Senior Software Engineer
> KDAB (Deutschland) GmbH & Co.KG, a KDAB Group Company
> Tel: +49-30-521325470
> KDAB - The Qt Experts
> _______________________________________________
> Development mailing list
> Development at qt-project.org
> http://lists.qt-project.org/mailman/listinfo/development
--
Sent from cellphone, sorry for the typos
More information about the Development
mailing list