MythTV  master
Public Member Functions | Public Attributes | Static Public Attributes | List of all members
MPoolThread Class Reference
Inheritance diagram for MPoolThread:
Inheritance graph
[legend]
Collaboration diagram for MPoolThread:
Collaboration graph
[legend]

Public Member Functions

 MPoolThread (MThreadPool &pool, std::chrono::milliseconds timeout)
 
void run (void) override
 Runs the Qt event loop unless we have a QRunnable, in which case we run the runnable run instead. More...
 
bool SetRunnable (QRunnable *runnable, QString runnableName, bool reserved)
 
void Shutdown (void)
 
- Public Member Functions inherited from MThread
 MThread (const QString &objectName)
 Standard constructor. More...
 
 MThread (const QString &objectName, QRunnable *runnable)
 Use this constructor if you want the default run() method to run the QRunnable's run() method instead of entering the Qt event loop. More...
 
virtual ~MThread ()
 
 MThread (const MThread &)=delete
 
MThreadoperator= (const MThread &)=delete
 
void RunProlog (void)
 Sets up a thread, call this if you reimplement run(). More...
 
void RunEpilog (void)
 Cleans up a thread's resources, call this if you reimplement run(). More...
 
QThread * qthread (void)
 Returns the thread, this will always return the same pointer no matter how often you restart the thread. More...
 
void setObjectName (const QString &name)
 
QString objectName (void) const
 
void setPriority (QThread::Priority priority)
 
QThread::Priority priority (void) const
 
bool isFinished (void) const
 
bool isRunning (void) const
 
void setStackSize (uint stackSize)
 
uint stackSize (void) const
 
void exit (int retcode=0)
 Use this to exit from the thread if you are using a Qt event loop. More...
 
void start (QThread::Priority p=QThread::InheritPriority)
 Tell MThread to start running the thread in the near future. More...
 
void terminate (void)
 Kill a thread unsafely. More...
 
void quit (void)
 calls exit(0) More...
 
bool wait (std::chrono::milliseconds time=std::chrono::milliseconds::max())
 Wait for the MThread to exit, with a maximum timeout. More...
 

Public Attributes

QMutex m_lock
 
QWaitCondition m_wait
 
MThreadPoolm_pool
 
std::chrono::milliseconds m_expiryTimeout
 
bool m_doRun {true}
 
QString m_runnableName
 
bool m_reserved {false}
 

Static Public Attributes

static QMutex s_lock
 
static uint s_thread_num = 0
 

Additional Inherited Members

- Static Public Member Functions inherited from MThread
static void ThreadSetup (const QString &name)
 This is to be called on startup in those few threads that haven't been ported to MThread. More...
 
static void ThreadCleanup (void)
 This is to be called on exit in those few threads that haven't been ported to MThread. More...
 
static void Cleanup (void)
 This will print out all the running threads, call exit(1) on each and then wait up to 5 seconds total for all the threads to exit. More...
 
static void GetAllThreadNames (QStringList &list)
 
static void GetAllRunningThreadNames (QStringList &list)
 
- Protected Member Functions inherited from MThread
int exec (void)
 Enters the qt event loop. call exit or quit to exit thread. More...
 
- Static Protected Member Functions inherited from MThread
static void setTerminationEnabled (bool enabled=true)
 
static void usleep (std::chrono::microseconds time)
 
template<typename R , typename P >
static std::enable_if_t< std::chrono::treat_as_floating_point< R >::value, void > usleep (std::chrono::duration< R, P > time)
 
- Protected Attributes inherited from MThread
MThreadInternalm_thread {nullptr}
 
QRunnable * m_runnable {nullptr}
 
bool m_prologExecuted {true}
 
bool m_epilogExecuted {true}
 

Detailed Description

Definition at line 105 of file mthreadpool.cpp.

Constructor & Destructor Documentation

◆ MPoolThread()

MPoolThread::MPoolThread ( MThreadPool pool,
std::chrono::milliseconds  timeout 
)
inline

Definition at line 108 of file mthreadpool.cpp.

Member Function Documentation

◆ run()

void MPoolThread::run ( void  )
inlineoverridevirtual

Runs the Qt event loop unless we have a QRunnable, in which case we run the runnable run instead.

Note
If you override this method you must call RunProlog before you do any work and RunEpilog before you exit the run method.

Reimplemented from MThread.

Definition at line 116 of file mthreadpool.cpp.

◆ SetRunnable()

bool MPoolThread::SetRunnable ( QRunnable *  runnable,
QString  runnableName,
bool  reserved 
)
inline

Definition at line 177 of file mthreadpool.cpp.

Referenced by MThreadPool::NotifyAvailable(), and MThreadPool::TryStartInternal().

◆ Shutdown()

void MPoolThread::Shutdown ( void  )
inline

Definition at line 192 of file mthreadpool.cpp.

Referenced by MThreadPool::NotifyAvailable(), and MThreadPool::TryStartInternal().

Member Data Documentation

◆ m_lock

QMutex MPoolThread::m_lock

Definition at line 199 of file mthreadpool.cpp.

Referenced by run(), SetRunnable(), and Shutdown().

◆ m_wait

QWaitCondition MPoolThread::m_wait

Definition at line 200 of file mthreadpool.cpp.

Referenced by run(), SetRunnable(), and Shutdown().

◆ m_pool

MThreadPool& MPoolThread::m_pool

Definition at line 201 of file mthreadpool.cpp.

Referenced by run().

◆ m_expiryTimeout

std::chrono::milliseconds MPoolThread::m_expiryTimeout

Definition at line 202 of file mthreadpool.cpp.

Referenced by run().

◆ m_doRun

bool MPoolThread::m_doRun {true}

Definition at line 203 of file mthreadpool.cpp.

Referenced by run(), SetRunnable(), and Shutdown().

◆ m_runnableName

QString MPoolThread::m_runnableName

Definition at line 204 of file mthreadpool.cpp.

Referenced by run(), and SetRunnable().

◆ m_reserved

bool MPoolThread::m_reserved {false}

Definition at line 205 of file mthreadpool.cpp.

Referenced by run(), and SetRunnable().

◆ s_lock

QMutex MPoolThread::s_lock
static

Definition at line 207 of file mthreadpool.cpp.

Referenced by MPoolThread().

◆ s_thread_num

uint MPoolThread::s_thread_num = 0
static

Definition at line 208 of file mthreadpool.cpp.

Referenced by MPoolThread().


The documentation for this class was generated from the following file: