24#ifndef _THREADS_COUNTER_H_
25#define _THREADS_COUNTER_H_
84 void set(
bool bEnable)
86 if(
m_mutex && (m_bEnable != bEnable))
144 virtual void increase(
unsigned ,
const unsigned* ,
unsigned ) { }
151 virtual void decrease(
unsigned ,
const unsigned* ,
unsigned ) { }
251 {
if (nThreads && aThreads) { ++
m_count;
increaseProc(nThreads, aThreads, nThreadAttributes); } }
257 void decrease(
unsigned nThreads,
const unsigned* aThreads)
274 bool hasThread(
unsigned nThreadId,
unsigned *pThreadAttributes)
288 void increaseProc(
unsigned nThreads,
const unsigned* aThreads,
unsigned nThreadAttributes);
307#define TD_AUTOLOCK_P(Mutex) OdMutexPtrAutoLock autoLock(Mutex);
308#define TD_AUTOLOCK_P_DEF(Mutex) OdMutexPtrAutoLock autoLock(odThreadsCounter() ? Mutex.get() : NULL);
FIRSTDLL_EXPORT void odThreadYield()
void(* ExecuteMainThreadFunc)(MainThreadFunc, void *)
FIRSTDLL_EXPORT bool odExecuteMainThreadAction(MainThreadFunc mtFunc, void *pArg, bool bExecST=true)
void(* MainThreadFunc)(void *)
FIRSTDLL_EXPORT ThreadsCounter & odThreadsCounter()
FIRSTDLL_EXPORT unsigned odGetCurrentThreadId()
OdMutexPtrAutoLock(OdMutex *mutex)
void increaseProc(unsigned nThreads, const unsigned *aThreads, unsigned nThreadAttributes)
void setThreadPoolService(OdRxThreadPoolService *pService)
bool removeReactor(ThreadsCounterReactor *pReactor)
ExecuteMainThreadFunc m_mainThreadFunc
bool hasThreadProc(unsigned nThreadId, unsigned *pThreadAttributes)
OdRxThreadPoolService * getThreadPoolService()
ExecuteMainThreadFunc getMainThreadFunc()
void setMainThreadFunc(ExecuteMainThreadFunc func)
void decreaseProc(unsigned nThreads, const unsigned *aThreads)
OdRxThreadPoolService * m_threadPool
bool hasReactor(ThreadsCounterReactor *pReactor) const
bool hasThread(unsigned nThreadId, unsigned *pThreadAttributes)
void decrease(unsigned nThreads, const unsigned *aThreads)
void increase(unsigned nThreads, const unsigned *aThreads, unsigned nThreadAttributes=ThreadsCounter::kNoAttributes)
bool addReactor(ThreadsCounterReactor *pReactor)
virtual ~ThreadsCounterReactor()
virtual void decrease(unsigned, const unsigned *, unsigned)
virtual void startThread(unsigned, unsigned)
virtual void increase(unsigned, const unsigned *, unsigned)
virtual void stopThread(unsigned, unsigned)
typedef void(APIENTRYP PFNGLACTIVETEXTUREPROC)(GLenum texture)