23 #ifndef __LSCP_THREAD_H 
   24 #define __LSCP_THREAD_H 
   30 #if (defined(_WIN32) || defined(__WIN32__)) 
   44 #if defined(__cplusplus) 
   67 #define lscp_mutex_init(m)      { (m) = CreateMutex(NULL, 0, NULL); } 
   68 #define lscp_mutex_destroy(m)   if (m) { CloseHandle(m); } 
   69 #define lscp_mutex_lock(m)      WaitForSingleObject((m), INFINITE) 
   70 #define lscp_mutex_unlock(m)    ReleaseMutex(m) 
   73 #define lscp_mutex_init(m)      pthread_mutex_init(&(m), NULL) 
   74 #define lscp_mutex_destroy(m)   pthread_mutex_destroy(&(m)) 
   75 #define lscp_mutex_lock(m)      pthread_mutex_lock(&(m)) 
   76 #define lscp_mutex_unlock(m)    pthread_mutex_unlock(&(m)) 
   84 #define lscp_cond_init(c)       { (c) = CreateEvent(NULL, FALSE, FALSE, NULL); } 
   85 #define lscp_cond_destroy(c)    if (c) { CloseHandle(c); } 
   86 #define lscp_cond_wait(c, m)    { lscp_mutex_unlock(m); WaitForSingleObject((c), INFINITE); lscp_mutex_lock(m); } 
   87 #define lscp_cond_signal(c)     SetEvent(c) 
   90 #define lscp_cond_init(c)       pthread_cond_init(&(c), NULL) 
   91 #define lscp_cond_destroy(c)    pthread_cond_destroy(&(c)) 
   92 #define lscp_cond_wait(c, m)    pthread_cond_wait(&(c), &(m)) 
   93 #define lscp_cond_signal(c)     pthread_cond_signal(&(c)) 
  111 #define lscp_thread_exit()  ExitThread(0) 
  113 #define lscp_thread_exit()  pthread_exit(NULL) 
  116 #if defined(__cplusplus) 
lscp_thread_proc_t pfnProc
Definition: thread.c:36
void * pvData
Definition: thread.c:37
int iDetach
Definition: thread.c:38
lscp_status_t lscp_thread_cancel(lscp_thread_t *pThread)
Definition: thread.c:135
void(* lscp_thread_proc_t)(void *pvData)
Definition: thread.h:101
enum _lscp_status_t lscp_status_t
lscp_thread_t * lscp_thread_create(lscp_thread_proc_t pfnProc, void *pvData, int iDetach)
Definition: thread.c:63
pthread_mutex_t lscp_mutex_t
Definition: thread.h:72
pthread_cond_t lscp_cond_t
Definition: thread.h:89
lscp_status_t lscp_thread_join(lscp_thread_t *pThread)
Definition: thread.c:110
_lscp_status_t
Definition: thread.h:52
@ LSCP_OK
Definition: thread.h:53
@ LSCP_QUIT
Definition: thread.h:58
@ LSCP_TIMEOUT
Definition: thread.h:57
@ LSCP_ERROR
Definition: thread.h:55
@ LSCP_WARNING
Definition: thread.h:56
@ LSCP_FAILED
Definition: thread.h:54
lscp_status_t lscp_thread_destroy(lscp_thread_t *pThread)
Definition: thread.c:160