Gray C++ Libraries  0.0.2
A set of C++ libraries for MSVC, GNU on Windows, WinCE, Linux
GrayLib::cJobThreadSeq Class Reference

#include <cJobThreadSeq.h>

Inheritance diagram for GrayLib::cJobThreadSeq:
GrayLib::cThreadNamed< cJobThreadSeq > GrayLib::cThreadChecked GrayLib::cThread GrayLib::cThreadBase Gray::cRefBase Gray::cThreadState Gray::CObject Gray::cThreadId IUnknown

Public Member Functions

 cJobThreadSeq (TIMESYSD_t tPollFreq=60 *cTimeSys::k_FREQ)
 
virtual ~cJobThreadSeq ()
 
 STDMETHOD_ (cString, get_Name)() const override
 
ITERATE_t AddJobX (cJobBase *pJob)
 
void RemoveAllJobs ()
 
- Public Member Functions inherited from GrayLib::cThreadNamed< cJobThreadSeq >
virtual HRESULT CreateThread (DWORD dwCreationFlags=0) override
 
- Public Member Functions inherited from GrayLib::cThreadChecked
 cThreadChecked ()
 
virtual ~cThreadChecked ()
 
virtual bool CheckStuckThread (TIMESYSD_t iMilliSecTilStuck, bool bTerminateAndRestart)
 called by external thread. More...
 
UINT get_ThreadTicks () const
 
bool isCriticalWait () const
 
void ChangeCriticalWait (int iDelta)
 
- Public Member Functions inherited from GrayLib::cThread
 cThread ()
 
virtual ~cThread ()
 
bool isValidThreadHandle () const noexcept
 
THREADID_t get_HashCode () const noexcept
 
virtual bool isValidCheck () const noexcept
 < memory allocation and structure definitions are valid. More...
 
 STDMETHOD_ (cString, get_Name)() const
 override memory allocation and structure definitions are valid. More...
 
bool isThreadSleeping () const noexcept
 
THREAD_EXITCODE_t get_ExitCodeThread () const
 
int get_ThreadPriority () const
 
bool put_ThreadPriority (int nPriority)
 
bool SuspendThread ()
 
bool ResumeThread ()
 
virtual HRESULT SleepThread (TIMESYSD_t dwWaitMillisec=1, bool bAlertable=false)
 
virtual bool RequestStopThread (bool bWillWait=false) noexcept override
 
bool ExitCurrentThread (THREAD_EXITCODE_t nExitCode=THREAD_EXITCODE_OK)
 
bool WaitForThreadExit (TIMESYSD_t nMilliSec=cTimeSys::k_FREQ)
 
THREAD_EXITCODE_t WaitForThreadExitCode (TIMESYSD_t iTimeMSec=cTimeSys::k_FREQ)
 
bool TerminateThread (THREAD_EXITCODE_t iExitCode=THREAD_EXITCODE_ERR, TIMESYSD_t nMilliSec=0)
 
void AttachToCurrentThread ()
 
HRESULT CreateThread (THREAD_FUNC_t pEntryProc, void *pArgs, DWORD dwCreationFlags=0)
 
void CloseThread ()
 
- Public Member Functions inherited from GrayLib::cThreadBase
 cThreadBase () noexcept
 
virtual ~cThreadBase ()
 
- Public Member Functions inherited from Gray::CObject
virtual ~CObject ()
 
virtual void AssertValid () const
 < memory allocation and structure definitions are valid. More...
 
virtual void Serialize (cArchive &a)
 
- Public Member Functions inherited from Gray::cThreadId
 cThreadId (THREADID_t nThreadId=k_NULL) noexcept
 
THREADID_t GetThreadId () const noexcept
 
THREADID_t get_HashCode () const noexcept
 
bool isCurrentThread () const noexcept
 
bool isValidId () const noexcept
 
void InitCurrentId () noexcept
 
- Public Member Functions inherited from Gray::cRefBase
 cRefBase (int iRefCount=0) noexcept
 
virtual ~cRefBase ()
 
int get_RefCount () const noexcept
 
HASHCODE_t get_HashCode () const noexcept
 
 STDMETHOD_ (HASHCODE_t, get_HashCodeX)() const noexcept
 
virtual void onFinalRelease ()
 
bool isValidObj () const noexcept
 
 STDMETHOD_ (ULONG, AddRef)(void) override
 
 STDMETHOD_ (ULONG, Release)(void) override
 
STDMETHOD() QueryInterface (const IID &riid, void __RPC_FAR *__RPC_FAR *ppvObject) override
 
void IncRefCount ()
 
void DecRefCount ()
 
bool isStaticConstruct () const noexcept
 
void StaticConstruct ()
 
void StaticDestruct ()
 
bool isDestructing () noexcept
 
void SetDestructing ()
 
- Public Member Functions inherited from Gray::cThreadState
 cThreadState () noexcept
 
bool isThreadRunning () const noexcept
 
bool isThreadStopping () const noexcept
 

Public Attributes

cJobArray m_Jobs
 the array of jobs i run when i can. sequentially. More...
 
TIMESYSD_t m_tPollFreq
 How often to poll? default = 60 sec. More...
 
- Public Attributes inherited from GrayLib::cThreadChecked
UINT m_nThreadTicksLast
 checked periodically by outside observer. More...
 
cTimeSys m_tStart
 When did thread first run ? More...
 
TIMESYS_t m_timeLastChanged
 Last outside detected tick change time. More...
 
UINT m_nRecoveryStage
 What have we done about being stuck ? More...
 

Protected Member Functions

virtual void WakeThread () override
 
virtual THREAD_EXITCODE_t Run () override
 WorkerThreadProc. More...
 
- Protected Member Functions inherited from GrayLib::cThreadChecked
virtual bool ThreadTick () override
 
virtual void onThreadCreate () override
 Notification that the thread has started or stopped. More...
 
- Protected Member Functions inherited from GrayLib::cThread
THREAD_EXITCODE_t RunDirectly ()
 
virtual void onThreadExit (THREAD_EXITCODE_t nExitCode)
 OnExit. More...
 
void onThreadTerminated (THREAD_EXITCODE_t nExitCode)
 

Additional Inherited Members

- Static Public Member Functions inherited from GrayLib::cThreadChecked
static cThreadChecked *GRAYCALL GetCurrentThreadChecked ()
 
- Static Public Member Functions inherited from GrayLib::cThread
static cThread *GRAYCALL GetCurrentThread ()
 
static bool GRAYCALL IsCurrentThreadStopping ()
 
static void GRAYCALL RequestStopThreadArray (bool bWillWait, cThread **ppThreads, size_t nThreads)
 
static void GRAYCALL TerminateThreadArray (THREAD_EXITCODE_t nExitCode, TIMESYSD_t iTimeMSec, cThread **ppThreads, size_t nThreads)
 
- Static Public Member Functions inherited from Gray::cThreadId
static THREADID_t GetCurrentId () noexcept
 
static bool IsValidId (THREADID_t id) noexcept
 
static bool IsEqualId (THREADID_t a, THREADID_t b) noexcept
 
static void SleepCurrent (TIMESYS_t uMs=cTimeSys::k_FREQ) noexcept
 
- Static Public Attributes inherited from Gray::cThreadId
static const THREADID_t k_NULL = 0
 Not a valid thread Id. More...
 
- Static Protected Member Functions inherited from GrayLib::cThreadNamed< cJobThreadSeq >
static THREAD_EXITCODE_t _stdcall EntryProc (void *pThisThread)
 
- Static Protected Member Functions inherited from GrayLib::cThread
static THREAD_EXITCODE_t _stdcall EntryProc (void *pThisThread)
 _WorkerThreadProc More...
 
- Protected Attributes inherited from GrayLib::cThreadChecked
UINT m_nThreadTicks
 periodically increment this to make sure the thread is alive! More...
 
- Protected Attributes inherited from GrayLib::cThread
bool m_bThreadSleeping
 Idle worker threads waiting for something to do. inside Sleep() or WaitForSingleObject() More...
 
bool m_bThreadSuspended
 May be resumed. inside Suspend() -> Resume() More...
 
- Protected Attributes inherited from GrayLib::cThreadBase
THREADHANDLE_t m_hThread
 there may be many handles to the same THREADID_t in _WIN32. I must call CloseThread() on this. More...
 
- Protected Attributes inherited from Gray::cThreadId
THREADID_t m_dwThreadId
 unique thread id. i.e. stack base pointer. (Use the MFC name) More...
 
- Protected Attributes inherited from Gray::cThreadState
bool m_bThreadRunning
 called CreateThread() onThreadCreate(), and inside Run(), until onThreadExit() More...
 
volatile bool m_bThreadStopping
 trying to stop the thread nicely. Do this before TerminateThread() More...
 

Detailed Description

a background thread for doing sequences of slow / low (equal) priority stuff. Exec a sequence of jobs to completion on this thread. (NOT parallel) Similar to cJobThreadMgr.

Constructor & Destructor Documentation

◆ cJobThreadSeq()

GrayLib::cJobThreadSeq::cJobThreadSeq ( TIMESYSD_t  tPollFreq = 60 * cTimeSys::k_FREQ)

◆ ~cJobThreadSeq()

GrayLib::cJobThreadSeq::~cJobThreadSeq ( )
virtual

Member Function Documentation

◆ AddJobX()

ITERATE_t GrayLib::cJobThreadSeq::AddJobX ( cJobBase pJob)

◆ RemoveAllJobs()

void GrayLib::cJobThreadSeq::RemoveAllJobs ( )

◆ Run()

THREAD_EXITCODE_t GrayLib::cJobThreadSeq::Run ( )
overrideprotectedvirtual

WorkerThreadProc.

thread should override this for body.

Just make sure the main loop is alive every so often. This should be the parent thread. try to restart it if it is not.

implementation should virtual override this (or ThreadTick) for body.

Reimplemented from GrayLib::cThread.

◆ STDMETHOD_()

GrayLib::cJobThreadSeq::STDMETHOD_ ( cString  ,
get_Name   
) const
inlineoverride

◆ WakeThread()

void GrayLib::cJobThreadSeq::WakeThread ( )
overrideprotectedvirtual

Usually just to wake up to stop the thread nicely.

Reimplemented from GrayLib::cThread.

Member Data Documentation

◆ m_Jobs

cJobArray GrayLib::cJobThreadSeq::m_Jobs

the array of jobs i run when i can. sequentially.

◆ m_tPollFreq

TIMESYSD_t GrayLib::cJobThreadSeq::m_tPollFreq

How often to poll? default = 60 sec.


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