PIPeer important fix!
git-svn-id: svn://db.shs.com.ru/pip@115 12ceb7fc-bf1f-11e4-8940-5bc7170c53b5
This commit is contained in:
@@ -129,6 +129,7 @@ bool PIThread::start(int timer_delay) {
|
||||
pthread_attr_destroy(&attr);
|
||||
if (ret == 0) {
|
||||
#else
|
||||
if (thread != 0) CloseHandle(thread);
|
||||
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) {
|
||||
@@ -157,7 +158,7 @@ bool PIThread::startOnce() {
|
||||
pthread_attr_destroy(&attr);
|
||||
if (ret == 0) {
|
||||
#else
|
||||
uint _id = 0;
|
||||
if (thread != 0) CloseHandle(thread);
|
||||
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) {
|
||||
@@ -194,7 +195,7 @@ void PIThread::terminate() {
|
||||
}
|
||||
|
||||
|
||||
uint __stdcall PIThread::thread_function(void * t) {
|
||||
__THREAD_FUNC__ PIThread::thread_function(void * t) {
|
||||
#ifndef WINDOWS
|
||||
# ifndef ANDROID
|
||||
pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, 0);
|
||||
@@ -235,19 +236,19 @@ uint __stdcall PIThread::thread_function(void * t) {
|
||||
//cout << "thread " << t << " exiting ... " << endl;
|
||||
#ifndef WINDOWS
|
||||
pthread_detach(ct.thread);
|
||||
#endif
|
||||
ct.thread = 0;
|
||||
#endif
|
||||
#ifndef WINDOWS
|
||||
pthread_exit(0);
|
||||
#else
|
||||
_endthreadex(0);
|
||||
// ExitThread(0);
|
||||
//ExitThread(0);
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
uint __stdcall PIThread::thread_function_once(void * t) {
|
||||
__THREAD_FUNC__ PIThread::thread_function_once(void * t) {
|
||||
#ifndef WINDOWS
|
||||
# ifndef ANDROID
|
||||
pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, 0);
|
||||
@@ -270,13 +271,13 @@ uint __stdcall PIThread::thread_function_once(void * t) {
|
||||
//cout << "thread " << t << " exiting ... " << endl;
|
||||
#ifndef WINDOWS
|
||||
pthread_detach(ct.thread);
|
||||
#endif
|
||||
ct.thread = 0;
|
||||
#endif
|
||||
#ifndef WINDOWS
|
||||
pthread_exit(0);
|
||||
#else
|
||||
_endthreadex(0);
|
||||
// ExitThread(0);
|
||||
//ExitThread(0);
|
||||
#endif
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -28,6 +28,11 @@
|
||||
#include "piinit.h"
|
||||
#include "pimutex.h"
|
||||
#include "piobject.h"
|
||||
#ifdef WINDOWS
|
||||
# define __THREAD_FUNC__ uint __stdcall
|
||||
#else
|
||||
# define __THREAD_FUNC__ void*
|
||||
#endif
|
||||
|
||||
typedef void (*ThreadFunc)(void * );
|
||||
|
||||
@@ -174,8 +179,8 @@ public:
|
||||
//! \}
|
||||
|
||||
protected:
|
||||
static uint __stdcall thread_function(void * t);
|
||||
static uint __stdcall thread_function_once(void * t);
|
||||
static __THREAD_FUNC__ thread_function(void * t);
|
||||
static __THREAD_FUNC__ thread_function_once(void * t);
|
||||
static int priority2System(PIThread::Priority p);
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user