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) 89 typedef pthread_t MHD_thread_ID_;
90 #elif defined(MHD_USE_W32_THREADS) 91 typedef DWORD MHD_thread_ID_;
101 #if defined(MHD_USE_POSIX_THREADS) 102 # ifdef MHD_PTHREAD_CREATE__SET_ID_BEFORE_START_THREAD 103 union _MHD_thread_handle_ID_
105 MHD_thread_handle_ handle;
108 typedef union _MHD_thread_handle_ID_ MHD_thread_handle_ID_;
110 struct _MHD_thread_handle_ID_
112 MHD_thread_handle_ handle;
115 typedef struct _MHD_thread_handle_ID_ MHD_thread_handle_ID_;
117 #elif defined(MHD_USE_W32_THREADS) 118 struct _MHD_thread_handle_ID_
120 MHD_thread_handle_ handle;
123 typedef struct _MHD_thread_handle_ID_ MHD_thread_handle_ID_;
126 #if defined(MHD_USE_POSIX_THREADS) 132 #define MHD_join_thread_(thread) (!pthread_join((thread), NULL)) 133 #elif defined(MHD_USE_W32_THREADS) 139 #define MHD_join_thread_(thread) (WAIT_OBJECT_0 == WaitForSingleObject((thread), INFINITE) ? (CloseHandle((thread)), !0) : 0) 142 #if defined(MHD_USE_POSIX_THREADS) 148 #define MHD_thread_ID_match_current_(ID) (pthread_equal((ID), pthread_self())) 149 #elif defined(MHD_USE_W32_THREADS) 155 #define MHD_thread_ID_match_current_(ID) (GetCurrentThreadId() == (ID)) 158 #if defined(MHD_USE_POSIX_THREADS) 159 # ifdef MHD_PTHREAD_CREATE__SET_ID_BEFORE_START_THREAD 164 #define MHD_thread_init_(thread_handle_ID_ptr) (void)0 170 #define MHD_thread_init_(thread_handle_ID_ptr) ((thread_handle_ID_ptr)->ID=pthread_self()) 172 #elif defined(MHD_USE_W32_THREADS) 177 #define MHD_thread_init_(thread_handle_ID_ptr) ((thread_handle_ID_ptr)->ID=GetCurrentThreadId()) 186 typedef MHD_THRD_RTRN_TYPE_
207 #ifndef MHD_USE_THREAD_NAME_ 208 #define MHD_create_named_thread_(t,n,s,r,a) MHD_create_thread_((t),(s),(r),(a)) 222 const char* thread_name,
additional automatic macros for MHD_config.h
#define MHD_create_named_thread_(t, n, s, r, a)
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)