37 #define MHD_THREADS_H 1 46 #if defined(MHD_USE_POSIX_THREADS) 49 # define HAVE_CONFIG_H 1 50 #elif defined(MHD_USE_W32_THREADS) 51 # ifndef WIN32_LEAN_AND_MEAN 52 # define WIN32_LEAN_AND_MEAN 1 56 # error No threading API is available. 59 #ifndef MHD_NO_THREAD_NAMES 60 # if defined(MHD_USE_POSIX_THREADS) 61 # if defined(HAVE_PTHREAD_SETNAME_NP_GNU) || defined(HAVE_PTHREAD_SET_NAME_NP_FREEBSD) || \ 62 defined(HAVE_PTHREAD_SETNAME_NP_DARWIN) || defined(HAVE_PTHREAD_SETNAME_NP_NETBSD) 63 # define MHD_USE_THREAD_NAME_ 65 # elif defined(MHD_USE_W32_THREADS) 68 # define MHD_USE_THREAD_NAME_ 73 #if defined(MHD_USE_POSIX_THREADS) 74 typedef pthread_t MHD_thread_handle_;
75 #elif defined(MHD_USE_W32_THREADS) 76 typedef HANDLE MHD_thread_handle_;
79 #if defined(MHD_USE_POSIX_THREADS) 80 # define MHD_THRD_RTRN_TYPE_ void* 81 # define MHD_THRD_CALL_SPEC_ 82 #elif defined(MHD_USE_W32_THREADS) 83 # define MHD_THRD_RTRN_TYPE_ unsigned 84 # define MHD_THRD_CALL_SPEC_ __stdcall 87 #if defined(MHD_USE_POSIX_THREADS) 93 #define MHD_join_thread_(thread) (!pthread_join((thread), NULL)) 94 #elif defined(MHD_USE_W32_THREADS) 100 #define MHD_join_thread_(thread) (WAIT_OBJECT_0 == WaitForSingleObject((thread), INFINITE) ? (CloseHandle((thread)), !0) : 0) 109 typedef MHD_THRD_RTRN_TYPE_
127 MHD_THREAD_START_ROUTINE_ start_routine,
130 #ifndef MHD_USE_THREAD_NAME_ 131 #define MHD_create_named_thread_(t,n,s,r,a) MHD_create_thread_((t),(s),(r),(a)) 145 const char* thread_name,
147 MHD_THREAD_START_ROUTINE_ start_routine,
additional automatic macros for MHD_config.h
int MHD_create_thread_(MHD_thread_handle_ *thread, size_t stack_size, MHD_THREAD_START_ROUTINE_ start_routine, void *arg)
#define MHD_create_named_thread_(t, n, s, r, a)
MHD_THRD_RTRN_TYPE_(MHD_THRD_CALL_SPEC_ * MHD_THREAD_START_ROUTINE_)(void *cls)