Den fre 31 jan. 2020 kl 17:25 skrev Sona Kurazyan <sona.kuraz...@qt.io>:
>
> Hi everyone,
>
>
>
> It's been a while since we've started discussions on this topic. I would like 
> to summarize the outcome of these discussions and propose improvements to our 
> asynchronous APIs based on the feedback we've received so far.
>
>
>
> First of all, there was a question weather we should keep QtConcurrent and 
> QFuture (and related classes) at all, and the answer seems to be "yes", 
> because the corresponding STL alternatives are still lacking a lot of 
> features: std::future still doesn't support continuations, its API is not 
> finalized yet, no executors are supported for parallel algorithms in C++17, 
> etc. Additionally, Qt's asynchronous APIs have extensions like cancelling, 
> pausing, resuming and progress reporting (although not everyone agrees that 
> these extensions fit with a typical future, but they can be useful in 
> Qt-specific use-cases, for example GUI applications).
>
>
>
> On the other hand, there are couple of improvements to be applied to 
> QtConcurrent and QFuture* , to make them more useful and keep them in Qt 6. 
> Here's the list of suggestions I've collected:
>
>
>
> QFuture (and related classes)
>
> Officially document QFutureInterface and rename it to QPromise 
> (https://bugreports.qt.io/browse/QTBUG-81586)
> Add support for continuations to QFuture 
> (https://bugreports.qt.io/browse/QTBUG-81587)
> Provide a way of integrating QFuture with signals 
> (https://bugreports.qt.io/browse/QTBUG-81589)
> Improve the error reporting of QFuture 
> (https://bugreports.qt.io/browse/QTBUG-81588)
>
>
>
> QtConcurrent
>
> Rename QtConcurrent::run to qAsync() and modernize it 
> (https://bugreports.qt.io/browse/QTBUG-81590)
> Allow passing a QThreadPool* as a parameter to QtConcurrent algorithms to 
> avoid exhausting all system threads.
> Fix the algorithms which do not work with lambdas 
> (https://bugreports.qt.io/browse/QTBUG-33735)
> Add initial values to map/filter reduce 
> (https://bugreports.qt.io/browse/QTBUG-73240)

Even if I've not read all the links, to me as a user of QtConcurrent
these all sounds like great improvements, bringing significant value.

>
>
>
> It would be nice to hear some opinions, to see whether this is a right 
> direction to go, and if it makes sense to put our effort on these 
> improvements. Is there anything important I’m missing in the list? Or maybe 
> some of these items do not add much value?
>
>
>
> Additionally, there are some discussions about QFuture being a mix between a 
> “Task” and a “Future”. One of the options of improving this situation is to 
> make a QTask (or QJob) out of the current QFuture. But then the question is: 
> should we also support a “classic” QFuture? Is there a value in having it, 
> when there are already some very advanced implementations of a future?

I don't have too much to comment on this. Would the alternative to
QFuture in this scenario be a future class from somewhere else
(std::future, ...)? And the Qt goodies like
cancel/pause/resume/progress API would be on QTask?

Elvis

>
>
>
> Please share your thoughts!
>
>
>
> Thanks,
>
> Sona
>
>
>
> ________________________________
>
> From: Development <development-boun...@qt-project.org> on behalf of Karsten 
> Heimrich <karsten.heimr...@qt.io>
> Sent: Thursday, December 19, 2019 2:12 PM
> To: development@qt-project.org <development@qt-project.org>
> Subject: [Development] Make a decision for asynchronous APIs
>
>
>
> Hi,
>
> we are planning to continue some work on the QFuture, QtConcurrent APIs, 
> either improve up on the existing implementation or deprecate and remove them 
> completely for Qt6. We’ve created a user story in Jira and  like to gather 
> some feedback here. So if this topic is of interest for you, I would like to 
> point you to https://bugreports.qt.io/browse/QTBUG-80908 to place some 
> comments there.
>
>
>
> BR, Karsten
>
>
>
> _______________________________________________
> Development mailing list
> Development@qt-project.org
> https://lists.qt-project.org/listinfo/development
_______________________________________________
Development mailing list
Development@qt-project.org
https://lists.qt-project.org/listinfo/development

Reply via email to