[Development] QFutureInterface

Bauer, Christian christianbauer at siemens.com
Fri Nov 27 13:45:28 CET 2015

Hi Marc,

> You should be able to develop a QPromise/QPackagedTask with the current QFutureInterface already. 
> At least as long as it's attached to some > QThreadPool. 
> What, exactly, are you trying to do that requires a patch to QFI?
I am not aware of any QPackagedTask in Qt, only of packaged_task in C++11. Or do you mean RunFunctionTaskBase?

The QFuture(Interface) represents the return value of a function, e.g., the one passed in QtConcurrent::run.
The QFuture(Interface) will execute the function on a thread pool. As soon as this function returns, the return value is stored and the state of the promise set to Finished.

Our (simplified) problem is: this function does not return a value but feeds an asynchronous pipeline. When the pipeline processing is done it will call
 promise.SetResult(); promise.reportResult();
and only then the future should be notified of the result.

We can achieve this by using a custom waitForFinished() in our future wrapper, instead of using the QFuture waitForFinished. But this requires access to the QWaitCondition of the QFutureInterface.

I hope the use case is clear. The C++11 future/promise achieves exactly this, and we are using the QFuture in a similar way.


More information about the Development mailing list