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 defined(HAVE_PTHREAD_ATTR_SETNAME_NP_NETBSD) || defined(HAVE_PTHREAD_ATTR_SETNAME_NP_IBMI) 64 # define MHD_USE_THREAD_NAME_ 66 # elif defined(MHD_USE_W32_THREADS) 69 # define MHD_USE_THREAD_NAME_ 74 #if defined(MHD_USE_POSIX_THREADS) 75 typedef pthread_t MHD_thread_handle_;
76 #elif defined(MHD_USE_W32_THREADS) 77 typedef HANDLE MHD_thread_handle_;
80 #if defined(MHD_USE_POSIX_THREADS) 81 # define MHD_THRD_RTRN_TYPE_ void* 82 # define MHD_THRD_CALL_SPEC_ 83 #elif defined(MHD_USE_W32_THREADS) 84 # define MHD_THRD_RTRN_TYPE_ unsigned 85 # define MHD_THRD_CALL_SPEC_ __stdcall 88 #if defined(MHD_USE_POSIX_THREADS) 94 #define MHD_join_thread_(thread) (!pthread_join((thread), NULL)) 95 #elif defined(MHD_USE_W32_THREADS) 101 #define MHD_join_thread_(thread) (WAIT_OBJECT_0 == WaitForSingleObject((thread), INFINITE) ? (CloseHandle((thread)), !0) : 0) 110 typedef MHD_THRD_RTRN_TYPE_
128 MHD_THREAD_START_ROUTINE_ start_routine,
131 #ifndef MHD_USE_THREAD_NAME_ 132 #define MHD_create_named_thread_(t,n,s,r,a) MHD_create_thread_((t),(s),(r),(a)) 146 const char* thread_name,
148 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)