Si entiendo el siguiente código de la documentación QFutureWatcher correctamente, entonces hay una condición de carrera entre el último a las líneas:¿Cómo puedo utilizar un QFutureWatcher con QtConcurrent :: run() sin una condición de carrera
// 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);
Si la función ...
en el QtConcurrent::run(...)
finaliza antes de llamar a la línea siguiente, la señal watcher.finished()
nunca se activará. ¿Mi suposición es correcta? ¿Cómo puedo solucionar este error?