T66 CContinuousWorker tracks whether it has been started,

and when starting checks that it was not already started.
This commit is contained in:
Mathew Sutcliffe
2017-05-06 23:46:25 +01:00
parent fd649c0b5c
commit ca81c65eae
2 changed files with 16 additions and 1 deletions

View File

@@ -166,6 +166,12 @@ namespace BlackMisc
//! \threadsafe
bool isAbandoned() const;
//! True if the worker has started.
bool hasStarted() const { return m_started; }
//! Mark the task as started.
void setStarted() { m_started = true; }
//! Mark the task as finished.
void setFinished()
{
@@ -178,6 +184,7 @@ namespace BlackMisc
virtual void quit() noexcept {}
virtual void quitAndWait() noexcept { waitForFinished(); }
bool m_started = false;
bool m_finished = false;
mutable QMutex m_finishedMutex { QMutex::Recursive };
};
@@ -285,6 +292,8 @@ namespace BlackMisc
void ps_finish();
private:
using CWorkerBase::hasStarted;
using CWorkerBase::setStarted;
using CWorkerBase::setFinished;
QObject *m_owner = nullptr;