christianbauer at siemens.com
Fri Nov 27 13:45:28 CET 2015
> 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
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