11 #ifndef _DSL_THREADING_H_
12 #define _DSL_THREADING_H_
14 #if defined(__cplusplus) && ((defined(_MSC_VER) && _MSC_VER >= 1800 && __cplusplus >= 199711L) || __cplusplus >= 201103L)
15 #define DSL_THREADING_USE_C11
27 #define THREADIDTYPE DWORD
29 #define THREADIDTYPE pthread_t
60 DSL_API
void DSL_CC DSL_PrintRunningThreads();
61 DSL_API
void DSL_CC DSL_PrintRunningThreadsWithID(
int id);
64 #define DSL_DEFINE_THREAD(x) THREADTYPE x(void * lpData)
68 #define DSL_THREAD_START DSL_THREAD_INFO * tt = (DSL_THREAD_INFO *)lpData;
69 #define DSL_THREAD_END tt->RemoveMe(tt); return 0;
71 #if !defined(DSL_NO_OLD_THREAD_API) && !defined(DOXYGEN_SKIP)
73 #define DSL_THREADEND return 0;
76 DSL_API
void DSL_CC DSL_SetThreadName(DWORD dwThreadID, LPCSTR szThreadName);
79 #define DSL_THREAD_START DSL_THREAD_INFO * tt = (DSL_THREAD_INFO *)lpData;
80 #define DSL_THREAD_END tt->RemoveMe(tt); return NULL;
82 #if !defined(DSL_NO_OLD_THREAD_API) && !defined(DOXYGEN_SKIP)
84 #define DSL_THREADEND return NULL;
87 #define GetCurrentThreadId pthread_self
90 #if !defined(NO_CPLUSPLUS) || defined(DOXYGEN_SKIP)
91 DSL_API
void DSL_CC safe_sleep(
int sleepfor,
bool inmilli =
false);
93 DSL_API
void DSL_CC safe_sleep(
int sleepfor,
bool inmilli);
95 #define safe_sleep_ms(sleepfor) safe_sleep(sleepfor, true)
96 #define safe_sleep_s(sleepfor) safe_sleep(sleepfor, false)
DSL_API uint32 DSL_CC DSL_NumThreads()
Number of active threads (does not count threads started with DSL_StartThreadNoRecord)
DSL_API bool DSL_CC DSL_StartThreadNoRecord(ThreadProto Thread, void *Parm, const char *Desc=NULL)
DSL_API DSL_THREAD_INFO *DSL_CC DSL_StartThread(ThreadProto Thread, void *Parm, const char *Desc=NULL, int32 id=-1)
DSL_API uint32 DSL_CC DSL_NumThreadsWithID(int id)
Number of active threads with matching id #.
void * parm
User-specified parameter.
int32 id
User-specified ID, if DSL_StartThread() is used with no ID, it defaults to -1.