mirror of
https://github.com/swift-project/pilotclient.git
synced 2026-05-03 16:25:54 +08:00
Rewrite CWorker::waitForFinished using std::future<void> instead of QWaitCondition.
This commit is contained in:
@@ -8,7 +8,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "worker.h"
|
#include "worker.h"
|
||||||
#include <QWaitCondition>
|
#include <future>
|
||||||
|
|
||||||
namespace BlackMisc
|
namespace BlackMisc
|
||||||
{
|
{
|
||||||
@@ -44,15 +44,9 @@ namespace BlackMisc
|
|||||||
|
|
||||||
void CWorkerBase::waitForFinished() Q_DECL_NOEXCEPT
|
void CWorkerBase::waitForFinished() Q_DECL_NOEXCEPT
|
||||||
{
|
{
|
||||||
QMutex mutex;
|
std::promise<void> promise;
|
||||||
QMutexLocker waitCondLock(&mutex);
|
then([ & ] { promise.set_value(); });
|
||||||
QWaitCondition waitCond;
|
promise.get_future().wait();
|
||||||
{
|
|
||||||
QMutexLocker finishedLock(&m_finishedMutex);
|
|
||||||
if (m_finished) { return; }
|
|
||||||
then([ & ] { mutex.lock(); mutex.unlock(); waitCond.wakeAll(); });
|
|
||||||
}
|
|
||||||
waitCond.wait(&mutex);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void CContinuousWorker::start(QThread::Priority priority)
|
void CContinuousWorker::start(QThread::Priority priority)
|
||||||
|
|||||||
Reference in New Issue
Block a user