diff --git a/src/thread/pithread.cpp b/src/thread/pithread.cpp index c2c8660c..b8b3b644 100755 --- a/src/thread/pithread.cpp +++ b/src/thread/pithread.cpp @@ -129,7 +129,8 @@ bool PIThread::start(int timer_delay) { pthread_attr_destroy(&attr); if (ret == 0) { #else - thread = CreateThread(0, 0, (LPTHREAD_START_ROUTINE)thread_function, this, 0, 0); + thread = (void *)_beginthreadex(0, 0, thread_function, this, 0, 0); +// thread = CreateThread(0, 0, (LPTHREAD_START_ROUTINE)thread_function, this, 0, 0); if (thread != 0) { #endif setPriority(priority_); @@ -156,7 +157,9 @@ bool PIThread::startOnce() { pthread_attr_destroy(&attr); if (ret == 0) { #else - thread = CreateThread(0, 0, (LPTHREAD_START_ROUTINE)thread_function_once, this, 0, 0); + uint _id = 0; + thread = (void *)_beginthreadex(0, 0, thread_function_once, this, 0, 0); +// thread = CreateThread(0, 0, (LPTHREAD_START_ROUTINE)thread_function_once, this, 0, 0); if (thread != 0) { #endif setPriority(priority_); @@ -191,7 +194,7 @@ void PIThread::terminate() { } -void * PIThread::thread_function(void * t) { +uint __stdcall PIThread::thread_function(void * t) { #ifndef WINDOWS # ifndef ANDROID pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, 0); @@ -237,13 +240,14 @@ void * PIThread::thread_function(void * t) { #ifndef WINDOWS pthread_exit(0); #else - ExitThread(0); + _endthreadex(0); +// ExitThread(0); #endif return 0; } -void * PIThread::thread_function_once(void * t) { +uint __stdcall PIThread::thread_function_once(void * t) { #ifndef WINDOWS # ifndef ANDROID pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, 0); @@ -271,7 +275,8 @@ void * PIThread::thread_function_once(void * t) { #ifndef WINDOWS pthread_exit(0); #else - ExitThread(0); + _endthreadex(0); +// ExitThread(0); #endif return 0; } diff --git a/src/thread/pithread.h b/src/thread/pithread.h index 9a2cddc5..e649a4b8 100755 --- a/src/thread/pithread.h +++ b/src/thread/pithread.h @@ -174,8 +174,8 @@ public: //! \} protected: - static void * thread_function(void * t); - static void * thread_function_once(void * t); + static uint __stdcall thread_function(void * t); + static uint __stdcall thread_function_once(void * t); static int priority2System(PIThread::Priority p);