Wenn ich den folgenden Code aus der QFutureWatcher Dokumentation richtig verstanden habe, dann eine Racebedingung zwischen dem letzten Zeilen besteht:Wie kann ich einen QFutureWatcher mit QtConcurrent :: run() ohne Racebedingung
// Instantiate the objects and connect to the finished signal.
MyClass myObject;
QFutureWatcher<int> watcher;
connect(&watcher, SIGNAL(finished()), &myObject, SLOT(handleFinished()));
// Start the computation.
QFuture<int> future = QtConcurrent::run(...);
watcher.setFuture(future);
Wenn die Funktion ...
im QtConcurrent::run(...)
beendet wird, bevor die nächste Zeile aufgerufen wird, wird das Signal watcher.finished()
niemals ausgelöst. Ist meine Annahme richtig? Wie kann ich diesen Fehler beheben?