diff options
Diffstat (limited to 'src/libjin/Thread')
-rw-r--r-- | src/libjin/Thread/Thread.cpp | 14 | ||||
-rw-r--r-- | src/libjin/Thread/Thread.h | 8 | ||||
-rw-r--r-- | src/libjin/Thread/thread.cpp | 14 | ||||
-rw-r--r-- | src/libjin/Thread/thread.h | 8 |
4 files changed, 12 insertions, 32 deletions
diff --git a/src/libjin/Thread/Thread.cpp b/src/libjin/Thread/Thread.cpp index 2be44a1..13e691a 100644 --- a/src/libjin/Thread/Thread.cpp +++ b/src/libjin/Thread/Thread.cpp @@ -171,14 +171,6 @@ namespace thread ////////////////////////////////////////////////////////////////////// - int Thread::ThreadFunciton(void* p) - { - Thread* thread = (Thread*)p; - if (thread->threadRunner != nullptr) - thread->threadRunner(thread); - return 0; - } - Thread::Thread(const std::string tname, ThreadRunner runner) : name(tname) , running(false) @@ -207,7 +199,7 @@ namespace thread return running; }; - bool Thread::start() + bool Thread::start(void* p) { Lock l(mutex); if (running) @@ -219,8 +211,8 @@ namespace thread #endif } #if JIN_THREAD_SDL - handle = SDL_CreateThread(ThreadFunciton, name.c_str(), this); - #elif JIN_THREAD_CPP + handle = SDL_CreateThread(threadRunner, name.c_str(), p); + #elif JIN_THREAD_CPP handle = new std::thread(); #endif return (running = (handle != nullptr)); diff --git a/src/libjin/Thread/Thread.h b/src/libjin/Thread/Thread.h index 5b74f23..046c8f6 100644 --- a/src/libjin/Thread/Thread.h +++ b/src/libjin/Thread/Thread.h @@ -97,10 +97,10 @@ namespace thread }; public: - typedef void(ThreadRunner)(Thread* thread); + typedef int(*ThreadRunner)(void* obj); Thread(const std::string name, ThreadRunner threadfuncs); ~Thread(); - bool start(); + bool start(void* p); void wait(); void send(int slot, const Variant& value); bool receive(int slot); @@ -120,7 +120,7 @@ namespace thread #endif Mutex* mutex; // mutex variable Conditional* condition; // condition variable - ThreadRunner* threadRunner; // thread function + ThreadRunner threadRunner; // thread function ThreadData* common; // threads common data const std::string name; // thread name, for debugging purposes /** @@ -154,8 +154,6 @@ namespace thread */ bool running; // running - static int ThreadFunciton(void* p); - }; } // thread diff --git a/src/libjin/Thread/thread.cpp b/src/libjin/Thread/thread.cpp index 2be44a1..13e691a 100644 --- a/src/libjin/Thread/thread.cpp +++ b/src/libjin/Thread/thread.cpp @@ -171,14 +171,6 @@ namespace thread ////////////////////////////////////////////////////////////////////// - int Thread::ThreadFunciton(void* p) - { - Thread* thread = (Thread*)p; - if (thread->threadRunner != nullptr) - thread->threadRunner(thread); - return 0; - } - Thread::Thread(const std::string tname, ThreadRunner runner) : name(tname) , running(false) @@ -207,7 +199,7 @@ namespace thread return running; }; - bool Thread::start() + bool Thread::start(void* p) { Lock l(mutex); if (running) @@ -219,8 +211,8 @@ namespace thread #endif } #if JIN_THREAD_SDL - handle = SDL_CreateThread(ThreadFunciton, name.c_str(), this); - #elif JIN_THREAD_CPP + handle = SDL_CreateThread(threadRunner, name.c_str(), p); + #elif JIN_THREAD_CPP handle = new std::thread(); #endif return (running = (handle != nullptr)); diff --git a/src/libjin/Thread/thread.h b/src/libjin/Thread/thread.h index 5b74f23..046c8f6 100644 --- a/src/libjin/Thread/thread.h +++ b/src/libjin/Thread/thread.h @@ -97,10 +97,10 @@ namespace thread }; public: - typedef void(ThreadRunner)(Thread* thread); + typedef int(*ThreadRunner)(void* obj); Thread(const std::string name, ThreadRunner threadfuncs); ~Thread(); - bool start(); + bool start(void* p); void wait(); void send(int slot, const Variant& value); bool receive(int slot); @@ -120,7 +120,7 @@ namespace thread #endif Mutex* mutex; // mutex variable Conditional* condition; // condition variable - ThreadRunner* threadRunner; // thread function + ThreadRunner threadRunner; // thread function ThreadData* common; // threads common data const std::string name; // thread name, for debugging purposes /** @@ -154,8 +154,6 @@ namespace thread */ bool running; // running - static int ThreadFunciton(void* p); - }; } // thread |