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) || \ 62 defined(HAVE_PTHREAD_SET_NAME_NP_FREEBSD) || \ 63 defined(HAVE_PTHREAD_SETNAME_NP_DARWIN) || \ 64 defined(HAVE_PTHREAD_SETNAME_NP_NETBSD) || \ 65 defined(HAVE_PTHREAD_ATTR_SETNAME_NP_NETBSD) || \ 66 defined(HAVE_PTHREAD_ATTR_SETNAME_NP_IBMI) 67 # define MHD_USE_THREAD_NAME_ 69 # elif defined(MHD_USE_W32_THREADS) 72 # define MHD_USE_THREAD_NAME_ 77 #if defined(MHD_USE_POSIX_THREADS) 78 typedef pthread_t MHD_thread_handle_;
79 #elif defined(MHD_USE_W32_THREADS) 80 typedef HANDLE MHD_thread_handle_;
83 #if defined(MHD_USE_POSIX_THREADS) 84 # define MHD_THRD_RTRN_TYPE_ void* 85 # define MHD_THRD_CALL_SPEC_ 86 #elif defined(MHD_USE_W32_THREADS) 87 # define MHD_THRD_RTRN_TYPE_ unsigned 88 # define MHD_THRD_CALL_SPEC_ __stdcall 91 #if defined(MHD_USE_POSIX_THREADS) 92 typedef pthread_t MHD_thread_ID_;
93 #elif defined(MHD_USE_W32_THREADS) 94 typedef DWORD MHD_thread_ID_;
104 #if defined(MHD_USE_POSIX_THREADS) 105 # ifdef MHD_PTHREAD_CREATE__SET_ID_BEFORE_START_THREAD 106 union _MHD_thread_handle_ID_
108 MHD_thread_handle_ handle;
111 typedef union _MHD_thread_handle_ID_ MHD_thread_handle_ID_;
113 struct _MHD_thread_handle_ID_
115 MHD_thread_handle_ handle;
118 typedef struct _MHD_thread_handle_ID_ MHD_thread_handle_ID_;
120 #elif defined(MHD_USE_W32_THREADS) 121 struct _MHD_thread_handle_ID_
123 MHD_thread_handle_ handle;
126 typedef struct _MHD_thread_handle_ID_ MHD_thread_handle_ID_;
129 #if defined(MHD_USE_POSIX_THREADS) 135 #define MHD_join_thread_(thread) (! pthread_join ((thread), NULL)) 136 #elif defined(MHD_USE_W32_THREADS) 142 #define MHD_join_thread_(thread) (WAIT_OBJECT_0 == WaitForSingleObject ( \ 143 (thread), INFINITE) ? (CloseHandle ( \ 148 #if defined(MHD_USE_POSIX_THREADS) 154 #define MHD_thread_ID_match_current_(ID) (pthread_equal ((ID), pthread_self ())) 155 #elif defined(MHD_USE_W32_THREADS) 161 #define MHD_thread_ID_match_current_(ID) (GetCurrentThreadId () == (ID)) 164 #if defined(MHD_USE_POSIX_THREADS) 165 # ifdef MHD_PTHREAD_CREATE__SET_ID_BEFORE_START_THREAD 170 #define MHD_thread_init_(thread_handle_ID_ptr) (void) 0 176 #define MHD_thread_init_(thread_handle_ID_ptr) ((thread_handle_ID_ptr)->ID = \ 179 #elif defined(MHD_USE_W32_THREADS) 184 #define MHD_thread_init_(thread_handle_ID_ptr) ((thread_handle_ID_ptr)->ID = \ 185 GetCurrentThreadId ()) 194 typedef MHD_THRD_RTRN_TYPE_
215 #ifndef MHD_USE_THREAD_NAME_ 216 #define MHD_create_named_thread_(t,n,s,r,a) MHD_create_thread_ ((t),(s),(r),(a)) 230 const char*thread_name,
additional automatic macros for MHD_config.h
MHD_THRD_RTRN_TYPE_(MHD_THRD_CALL_SPEC_ * MHD_THREAD_START_ROUTINE_)(void *cls)
int MHD_create_thread_(MHD_thread_handle_ID_ *thread, size_t stack_size, MHD_THREAD_START_ROUTINE_ start_routine, void *arg)
#define MHD_create_named_thread_(t, n, s, r, a)