add and use beginthread/createthread macro for windowses

This commit is contained in:
Viktor Szakats 2025-08-01 22:10:15 +02:00
parent 4d825c74d4
commit 57ff443a4c
No known key found for this signature in database
GPG key ID: B5ABD165E2AEF201
5 changed files with 9 additions and 13 deletions

View file

@ -643,9 +643,11 @@
#if defined(CURL_WINDOWS_UWP) || defined(UNDER_CE)
#define CURL_THREAD_RETURN_T DWORD
typedef HANDLE curl_win_thread_handle_t;
#define CURL_WIN_BEGINTHREAD CreateThread
#else
#define CURL_THREAD_RETURN_T unsigned int
typedef uintptr_t curl_win_thread_handle_t;
#define CURL_WIN_BEGINTHREAD _beginthreadex
#endif
/*

View file

@ -135,11 +135,7 @@ curl_thread_t Curl_thread_create(CURL_THREAD_RETURN_T
{
curl_thread_t t;
curl_win_thread_handle_t thread_handle;
#if defined(CURL_WINDOWS_UWP) || defined(UNDER_CE)
thread_handle = CreateThread(NULL, 0, func, arg, 0, NULL);
#else
thread_handle = _beginthreadex(NULL, 0, func, arg, 0, NULL);
#endif
thread_handle = CURL_WIN_BEGINTHREAD(NULL, 0, func, arg, 0, NULL);
t = (curl_thread_t)thread_handle;
if((t == 0) || (t == LongToHandle(-1L))) {
#ifdef UNDER_CE

View file

@ -58,11 +58,7 @@ static CURLcode test_lib3026(const char *URL)
for(i = 0; i < tid_count; i++) {
curl_win_thread_handle_t th;
results[i] = CURL_LAST; /* initialize with invalid value */
#if defined(CURL_WINDOWS_UWP) || defined(UNDER_CE)
th = CreateThread(NULL, 0, t3026_run_thread, &results[i], 0, NULL);
#else
th = _beginthreadex(NULL, 0, t3026_run_thread, &results[i], 0, NULL);
#endif
th = CURL_WIN_BEGINTHREAD(NULL, 0, t3026_run_thread, &results[i], 0, NULL);
if(!th) {
curl_mfprintf(stderr, "%s:%d Couldn't create thread, errno %lu\n",
__FILE__, __LINE__, GetLastError());

View file

@ -568,7 +568,8 @@ static HANDLE select_ws_wait(HANDLE handle, HANDLE signal, HANDLE abort)
data->abort = abort;
/* launch waiting thread */
thread = _beginthreadex(NULL, 0, &select_ws_wait_thread, data, 0, NULL);
thread = CURL_WIN_BEGINTHREAD(NULL, 0, &select_ws_wait_thread, data, 0,
NULL);
/* free data if thread failed to launch */
if(!thread) {

View file

@ -625,8 +625,9 @@ void install_signal_handlers(bool keep_sigalrm)
#if !defined(CURL_WINDOWS_UWP) && !defined(UNDER_CE)
{
curl_win_thread_handle_t thread;
thread = _beginthreadex(NULL, 0, &main_window_loop,
(void *)GetModuleHandle(NULL), 0, &thread_main_id);
thread = CURL_WIN_BEGINTHREAD(NULL, 0, &main_window_loop,
(void *)GetModuleHandle(NULL), 0,
&thread_main_id);
thread_main_window = (HANDLE)thread;
if(!thread_main_window || !thread_main_id)
logmsg("cannot start main window loop");