Bah, title of the mail should have been "Guarantee on finished emission _order_ ..." or course.
Elvis Den tors 18 okt. 2018 kl 16:53 skrev Elvis Stansvik <elvst...@gmail.com>: > > Hi all, > > Is there any guarantee on the order in which the > QFutureWatcher::finished signal will be emitted when multiple > QFutureWatchers are hooked up to the same QFuture? > > When the QFuture finishes, will finished be emitted by the > QFutureWatchers in the order in which setFuture were called upon them? > Or is there no guarantee? > > I'm thinking of a use case like (rough pseudo code): > > QFuture CachingReader::readAsync(...) { > if (result is available in cache) { > QFutureInterface interface; > interface.reportFinished(result from cache); > return QFuture(interface); > } > > future = QtConcurrent::run(readStuff, ...); > watcher = QFutureWatcher(); > connect(watcher, finished, [this, future]() { > // store future.result() in cache > }); > watcher.setFuture(future); > > return future; > } > > In this case, I'd really like the QFutureWatcher set up internally by > the function to be the one that fires first. It is guaranteed to be > the first one that calls QFutureWatcher::setFuture(..) with that > QFuture as parameter, but I'm not sure if that's any guarantee here? > > Thanks in advance, > Elvis _______________________________________________ Interest mailing list Interest@qt-project.org http://lists.qt-project.org/mailman/listinfo/interest