/* vim: ts=4 sw=4 sts=4 ff=unix fenc=utf-8 : * ===================================================================== * sc_thread.h * Copyright (c) 2003 - 2011 sys0tem * LICENSE : * LGPL (GNU Lesser General Public License - Version 3,29 June 2007) * http://www.gnu.org/copyleft/lesser.html * or * EPL (Eclipse Public License - v1.0) * http://www.eclipse.org/legal/epl-v10.html * ===================================================================== */ #ifndef __SC_THREAD_H__ #define __SC_THREAD_H__ #include <sc_os.h> #if (SC_isWindows) #include <windows.h> #include <process.h> typedef HANDLE mutex_t; #else #include <pthread.h> #include <time.h> typedef pthread_mutex_t mutex_t; #endif /* if (SC_isWindows) */ #include <sc_error.h> typedef struct SC_Thread_ { void* _data; void (*start)(struct SC_Thread_*); void (*join )(struct SC_Thread_*); void (*_run )(void*); #if (SC_isWindows) HANDLE _hThread; unsigned _threadID; #else pthread_t _tid; #endif } SC_Thread; typedef struct SC_Mutex_ { mutex_t mutex; } SC_Mutex; #ifdef __cplusplus extern "C" { #endif SC_Thread* SC_Thread_new(void (*run)(void*), void* data, size_t dataSize); void SC_Thread_delete(SC_Thread* thread); void SC_Mutex_init(mutex_t* mutex); void SC_Mutex_lock(mutex_t* mutex); void SC_Mutex_unlock(mutex_t* mutex); void SC_Mutex_destroy(mutex_t* mutex); void SC_sleep(long time); #ifdef __cplusplus } #endif #endif /* __SC_SOCKET_H__ */