![]() |
Gray C++ Libraries
0.0.2
A set of C++ libraries for MSVC, GNU on Windows, WinCE, Linux
|
#include <cJobThreadSeq.h>
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 () |
![]() | |
virtual HRESULT | CreateThread (DWORD dwCreationFlags=0) override |
![]() | |
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) |
![]() | |
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 () |
![]() | |
cThreadBase () noexcept | |
virtual | ~cThreadBase () |
![]() | |
virtual | ~CObject () |
virtual void | AssertValid () const |
< memory allocation and structure definitions are valid. More... | |
virtual void | Serialize (cArchive &a) |
![]() | |
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 |
![]() | |
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 () |
![]() | |
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... | |
![]() | |
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... | |
![]() | |
virtual bool | ThreadTick () override |
virtual void | onThreadCreate () override |
Notification that the thread has started or stopped. More... | |
![]() | |
THREAD_EXITCODE_t | RunDirectly () |
virtual void | onThreadExit (THREAD_EXITCODE_t nExitCode) |
OnExit. More... | |
void | onThreadTerminated (THREAD_EXITCODE_t nExitCode) |
Additional Inherited Members | |
![]() | |
static cThreadChecked *GRAYCALL | GetCurrentThreadChecked () |
![]() | |
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 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 const THREADID_t | k_NULL = 0 |
Not a valid thread Id. More... | |
![]() | |
static THREAD_EXITCODE_t _stdcall | EntryProc (void *pThisThread) |
![]() | |
static THREAD_EXITCODE_t _stdcall | EntryProc (void *pThisThread) |
_WorkerThreadProc More... | |
![]() | |
UINT | m_nThreadTicks |
periodically increment this to make sure the thread is alive! More... | |
![]() | |
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... | |
![]() | |
THREADHANDLE_t | m_hThread |
there may be many handles to the same THREADID_t in _WIN32. I must call CloseThread() on this. More... | |
![]() | |
THREADID_t | m_dwThreadId |
unique thread id. i.e. stack base pointer. (Use the MFC name) More... | |
![]() | |
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... | |
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.
GrayLib::cJobThreadSeq::cJobThreadSeq | ( | TIMESYSD_t | tPollFreq = 60 * cTimeSys::k_FREQ | ) |
|
virtual |
void GrayLib::cJobThreadSeq::RemoveAllJobs | ( | ) |
|
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.
|
inlineoverride |
|
overrideprotectedvirtual |
Usually just to wake up to stop the thread nicely.
Reimplemented from GrayLib::cThread.
cJobArray GrayLib::cJobThreadSeq::m_Jobs |
the array of jobs i run when i can. sequentially.
TIMESYSD_t GrayLib::cJobThreadSeq::m_tPollFreq |
How often to poll? default = 60 sec.