bir yarış durumu olmadan QtConcurrent ile QFutureWatcher :: run() kullanabilirsiniz QtConcurrent::run(...)
işlevinde sonraki satırın bitmesini tamamlarsa, watcher.finished()
sinyali hiçbir zaman tetiklenmez. Benim varsayım doğru mu? Bu hatayı nasıl gideririm?nasıl doğru QFutureWatcher belgelerinden aşağıdaki kodu anlamak, sonra hatlara son arasında bir yarış durumu vardır
9
A
cevap
11
sinyallerin
,Bir http://doc.qt.io/qt-4.8/qfuturewatcher.html#setFuture itibaren geleceğin mevcut durumu için yayılan olabilir. Örneğin, gelecek zaten durdurulmuşsa, bitmiş sinyali yayınlanacaktır.
setFuture
önceQtConcurrent::run(...)
tamamlamalar denir Diğer bir deyişle
setFuture
hala
QFuture
mevcut durumu hakkında bir sinyal verir. Yani, bir yarış durumundan kaçınmak için hiçbir şey yapmanıza gerek yok.
Ancak, kodun kalanı bağlı olarak, sizin MyClass
, QFuture
ve QFutureWatcher
QtConcurrent::run(...)
tamamlamadan önce kapsam dışına gitme sağlamak amacıyla QFuture::waitForFinished()
aramak gerekebilir.