![]() |
Gray C++ Libraries
0.0.2
A set of C++ libraries for MSVC, GNU on Windows, WinCE, Linux
|
#include <cThread.h>
Public Member Functions | |
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 void | WakeThread () |
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) |
virtual HRESULT | CreateThread (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 |
Static Public Member Functions | |
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 |
Public Attributes | |
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 bool | ThreadTick () override |
virtual void | onThreadCreate () override |
Notification that the thread has started or stopped. More... | |
![]() | |
virtual THREAD_EXITCODE_t | Run () |
WorkerThreadProc. More... | |
THREAD_EXITCODE_t | RunDirectly () |
virtual void | onThreadExit (THREAD_EXITCODE_t nExitCode) |
OnExit. More... | |
void | onThreadTerminated (THREAD_EXITCODE_t nExitCode) |
Protected Attributes | |
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... | |
Additional Inherited Members | |
![]() | |
static const THREADID_t | k_NULL = 0 |
Not a valid thread Id. More... | |
![]() | |
static THREAD_EXITCODE_t _stdcall | EntryProc (void *pThisThread) |
_WorkerThreadProc More... | |
A thread that can be checked from an outside thread. Periodically called to check if this thread is stuck. if so, then do something about it !
GrayLib::cThreadChecked::cThreadChecked | ( | ) |
|
virtual |
|
inline |
Tell the system that this thread may not respond for a bit.
|
virtual |
called by external thread.
Called from a separate thread.
|
inline |
|
static |
|
inline |
Thread wants some extra time to do some big job?
|
overrideprotectedvirtual |
Notification that the thread has started or stopped.
OnCreate for MFC
Call this when the thread starts. ONLY called ON the thread context itself ! Never by external thread. The id for the thread is different from the thread handle. There may be many handles but only one id ! don't worry about stop/terminating a thread before it starts. true terminate means this will not get called anyhow.
Reimplemented from GrayLib::cThread.
|
inlineoverrideprotectedvirtual |
Override this instead of override of Run(). This thread declares itself alive. Must call this periodically!
Reimplemented from GrayLib::cThread.
Reimplemented in GrayLib::cThreadFiber, GrayLib::cLogThread, GrayLib::cJobThread, GrayLib::cJobFiber, and GrayLib::cNetServerThread.
UINT GrayLib::cThreadChecked::m_nRecoveryStage |
What have we done about being stuck ?
|
protected |
periodically increment this to make sure the thread is alive!
UINT GrayLib::cThreadChecked::m_nThreadTicksLast |
checked periodically by outside observer.
Last outside detected tick
TIMESYS_t GrayLib::cThreadChecked::m_timeLastChanged |
Last outside detected tick change time.
cTimeSys GrayLib::cThreadChecked::m_tStart |
When did thread first run ?