#ifndef JAVA4CPPTHREAD_H #define JAVA4CPPTHREAD_H #ifdef _WIN32 # include # define callback_t unsigned long __stdcall # define thread_t HANDLE # define thread_create(thrd, fct, param) (thrd) = CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)(fct),(param),0,NULL) # define thread_delete(thrd) CloseHandle(thrd); # define thread_wait_close(thrd) WaitForSingleObject(thrd, INFINITE) # define mutex_t CRITICAL_SECTION # define mutex_init(mutex) InitializeCriticalSection(mutex) # define mutex_lock(mutex) EnterCriticalSection(mutex) # define mutex_unlock(mutex) LeaveCriticalSection(mutex) # define mutex_delete(mutex) DeleteCriticalSection(mutex) #else # include # define callback_t void * # define thread_t pthread_t # define thread_create(thrd, fct, param) pthread_create(&(thrd), NULL, (fct), (param)) # define thread_delete(thrd) # define thread_wait_close(thrd) pthread_join(thrd, NULL) # include # define mutex_t pthread_mutex_t # define mutex_init(mutex) pthread_mutex_init(&(mutex), NULL) # define mutex_lock(mutex) pthread_mutex_lock(&(mutex)) # define mutex_unlock(mutex) pthread_mutex_unlock(&(mutex)) # define mutex_delete(mutex) pthread_mutex_destroy(&(mutex)); #endif #endif