NCBI C++ ToolKit
|
Search Toolkit Book for CThreadNonStop
Adaptation of CThread class repeatedly running some job. More...
#include <util/thread_nonstop.hpp>
Public Member Functions | |
CThreadNonStop (unsigned run_delay, unsigned stop_request_poll=10) | |
Thread runs indefinetely with run_delay intervals the delay between job executions. More... | |
bool | IsStopRequested () const |
Return TRUE if thread stop has been requested. More... | |
void | RequestStop () |
Schedule thread Stop. More... | |
void | RequestDoJob () |
Interrupt the thread sleeping condition and force DoJob() run. More... | |
Public Member Functions inherited from CThread | |
CThread (void) | |
Constructor. More... | |
bool | Run (TRunMode flags=fRunDefault) |
Run the thread. More... | |
void | Detach (void) |
Inform the thread that user does not need to wait for its termination. More... | |
void | Join (void **exit_data=0) |
Wait for the thread termination. More... | |
bool | Discard (void) |
If the thread has not been Run() yet, then schedule the thread object for destruction, and return TRUE. More... | |
bool | IsTerminated (void) const |
Check if the thread has been terminated. More... | |
Public Member Functions inherited from CObject | |
CObject (void) | |
Constructor. More... | |
CObject (const CObject &src) | |
Copy constructor. More... | |
virtual | ~CObject (void) |
Destructor. More... | |
CObject & | operator= (const CObject &src) THROWS_NONE |
Assignment operator. More... | |
bool | CanBeDeleted (void) const THROWS_NONE |
Check if object can be deleted. More... | |
bool | IsAllocatedInPool (void) const THROWS_NONE |
Check if object is allocated in memory pool (not system heap) More... | |
bool | Referenced (void) const THROWS_NONE |
Check if object is referenced. More... | |
bool | ReferencedOnlyOnce (void) const THROWS_NONE |
Check if object is referenced only once. More... | |
void | AddReference (void) const |
Add reference to object. More... | |
void | RemoveReference (void) const |
Remove reference to object. More... | |
void | ReleaseReference (void) const |
Remove reference without deleting object. More... | |
virtual void | DoNotDeleteThisObject (void) |
Mark this object as not allocated in heap – do not delete this object. More... | |
virtual void | DoDeleteThisObject (void) |
Mark this object as allocated in heap – object can be deleted. More... | |
void * | operator new (size_t size) |
Define new operator for memory allocation. More... | |
void * | operator new[] (size_t size) |
Define new[] operator for 'array' memory allocation. More... | |
void | operator delete (void *ptr) |
Define delete operator for memory deallocation. More... | |
void | operator delete[] (void *ptr) |
Define delete[] operator for memory deallocation. More... | |
void * | operator new (size_t size, void *place) |
Define new operator. More... | |
void | operator delete (void *ptr, void *place) |
Define delete operator. More... | |
void * | operator new (size_t size, CObjectMemoryPool *place) |
Define new operator using memory pool. More... | |
void | operator delete (void *ptr, CObjectMemoryPool *place) |
Define delete operator. More... | |
virtual void | DebugDump (CDebugDumpContext ddc, unsigned int depth) const |
Define method for dumping debug information. More... | |
Public Member Functions inherited from CDebugDumpable | |
CDebugDumpable (void) | |
virtual | ~CDebugDumpable (void) |
void | DebugDumpText (ostream &out, const string &bundle, unsigned int depth) const |
void | DebugDumpFormat (CDebugDumpFormatter &ddf, const string &bundle, unsigned int depth) const |
void | DumpToConsole (void) const |
Protected Member Functions | |
~CThreadNonStop () | |
virtual void | DoJob (void)=0 |
Payload function. More... | |
virtual void * | Main (void) |
Overload from CThread. More... | |
Protected Member Functions inherited from CThread | |
virtual void | OnExit (void) |
Override this to execute finalization code. More... | |
virtual | ~CThread (void) |
To be called only internally! NOTE: destructor of the derived (user-provided) class should be declared "protected", too! More... | |
TThreadHandle | GetThreadHandle () |
Protected Member Functions inherited from CObject | |
virtual void | DeleteThis (void) |
Virtual method "deleting" this object. More... | |
Private Attributes | |
unsigned int | m_RunInterval |
CSemaphore | m_StopSignal |
CAtomicCounter_WithAutoInit | m_StopFlag |
Additional Inherited Members | |
Public Types inherited from CThread | |
enum | ERunMode { fRunDefault = 0x00 , fRunDetached = 0x01 , fRunBound = 0x10 , fRunUnbound = 0x20 , fRunNice = 0x40 , fRunAllowST = 0x100 , fRunCloneRequestContext = 0x200 } |
Which mode should the thread run in. More... | |
typedef int | TRunMode |
Bitwise OR'd flags for thread creation passed to Run(). More... | |
typedef unsigned int | TID |
Get ID of current thread. More... | |
Public Types inherited from CObject | |
enum | EAllocFillMode { eAllocFillNone = 1 , eAllocFillZero , eAllocFillPattern } |
Control filling of newly allocated memory. More... | |
typedef CObjectCounterLocker | TLockerType |
Default locker type for CRef. More... | |
typedef atomic< Uint8 > | TCounter |
Counter type is CAtomiCounter. More... | |
typedef Uint8 | TCount |
Alias for value type of counter. More... | |
Static Public Member Functions inherited from CThread | |
static void | Exit (void *exit_data) |
Cancel current thread. More... | |
static TID | GetSelf (void) |
static bool | IsMain (void) |
static CThread * | GetCurrentThread (void) |
Get current CThread object (or NULL, if main thread) More... | |
static void | GetSystemID (TThreadSystemID *id) |
Get system ID of the current thread - for internal use only. More... | |
static unsigned int | GetThreadsCount () |
Get total amount of threads This amount does not contain main thread. More... | |
static void | SetCurrentThreadName (const CTempString &) |
Set name for the current thread. More... | |
static void | InitializeMainThreadId (void) |
Initialize main thread's TID. More... | |
static bool | IsAppExiting (void) |
Check if the application is exiting (entered the destructor). More... | |
static void | SetWaitForAllThreadsTimeout (const CTimeout &timeout) |
Set timeout for stopping all threads on application exit. More... | |
Static Public Member Functions inherited from CObject | |
static NCBI_XNCBI_EXPORT void | ThrowNullPointerException (void) |
Define method to throw null pointer exception. More... | |
static NCBI_XNCBI_EXPORT void | ThrowNullPointerException (const type_info &type) |
static EAllocFillMode | GetAllocFillMode (void) |
static void | SetAllocFillMode (EAllocFillMode mode) |
static void | SetAllocFillMode (const string &value) |
Set mode from configuration parameter value. More... | |
Static Public Member Functions inherited from CDebugDumpable | |
static void | EnableDebugDump (bool on) |
Static Public Attributes inherited from CObject | |
static const TCount | eCounterBitsCanBeDeleted = 1 << 0 |
Define possible object states. More... | |
static const TCount | eCounterBitsInPlainHeap = 1 << 1 |
Heap signature was found. More... | |
static const TCount | eCounterBitsPlaceMask |
Mask for 'in heap' state flags. More... | |
static const int | eCounterStep = 1 << 2 |
Skip over the "in heap" bits. More... | |
static const TCount | eCounterValid = TCount(1) << (sizeof(TCount) * 8 - 2) |
Minimal value for valid objects (reference counter is zero) Must be a single bit value. More... | |
static const TCount | eCounterStateMask |
Valid object, and object in heap. More... | |
Adaptation of CThread class repeatedly running some job.
DoJob() method is getting called until RequestStop
Definition at line 43 of file thread_nonstop.hpp.
CThreadNonStop::CThreadNonStop | ( | unsigned | run_delay, |
unsigned | stop_request_poll = 10 |
||
) |
Thread runs indefinetely with run_delay intervals the delay between job executions.
run_delay | Interval in seconds between consecutive job (DoJob) runs. |
stop_request_poll | Obsolete parameter |
Definition at line 40 of file thread_nonstop.cpp.
|
inlineprotected |
Definition at line 68 of file thread_nonstop.hpp.
|
protectedpure virtual |
Payload function.
Must be overloaded to set the action This function is called over and over again until stop is requested.
Implemented in CIndexUpdateThread, CIndexUpdateThread, CNetStorageServiceThread, CServiceThread, CCacheCleanerThread, CBDB_MergeStoreAsync< BStore >::CJobThread, CBDB_MergeBlobWalkerAsync< BF >::CJobThread, and CBDB_CheckPointThread.
Referenced by Main().
bool CThreadNonStop::IsStopRequested | ( | ) | const |
Return TRUE if thread stop has been requested.
Definition at line 47 of file thread_nonstop.cpp.
References CAtomicCounter::Get(), and m_StopFlag.
|
protectedvirtual |
Overload from CThread.
Implements CThread.
Reimplemented in CNetStorageServiceThread, and CServiceThread.
Definition at line 63 of file thread_nonstop.cpp.
References DoJob(), CAtomicCounter::Get(), m_RunInterval, m_StopFlag, m_StopSignal, and CSemaphore::TryWait().
Referenced by CServiceThread::Main(), and CNetStorageServiceThread::Main().
void CThreadNonStop::RequestDoJob | ( | ) |
Interrupt the thread sleeping condition and force DoJob() run.
Definition at line 58 of file thread_nonstop.cpp.
References m_StopSignal, and CSemaphore::Post().
void CThreadNonStop::RequestStop | ( | ) |
Schedule thread Stop.
Thread does not stop immediately, but rather waits for the current job to complete and for the next stop flag poll. Use Join to wait for the actual stop.
Definition at line 52 of file thread_nonstop.cpp.
References CAtomicCounter::Add(), m_StopFlag, m_StopSignal, and CSemaphore::Post().
Referenced by CBDB_CheckPointThread::DoJob(), CCacheCleanerThread::DoJob(), CBDB_Env::StopBackgroundWriterThread(), CBDB_Cache::StopPurgeThread(), CQueueDataBase::StopServiceThread(), CNetStorageServer::StopServiceThread(), CWGSClient::~CWGSClient(), and CWGSDataLoader_Impl::~CWGSDataLoader_Impl().
|
private |
Definition at line 80 of file thread_nonstop.hpp.
Referenced by Main().
|
mutableprivate |
Definition at line 82 of file thread_nonstop.hpp.
Referenced by IsStopRequested(), Main(), and RequestStop().
|
mutableprivate |
Definition at line 81 of file thread_nonstop.hpp.
Referenced by Main(), RequestDoJob(), and RequestStop().