X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fthreadengines%2Fthreadengine_pthread.cpp;h=fcb4db444b0b63b8e776721d838b29ed839f099c;hb=b9006ce3cba742ca2a22d601ba1a63a47b0402c9;hp=8527907c491ca249dc40693e7e371ee5ac912e10;hpb=f71e6bf9cb41811f18864f5d4eecb26e29d03f25;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/threadengines/threadengine_pthread.cpp b/src/threadengines/threadengine_pthread.cpp index 8527907c4..fcb4db444 100644 --- a/src/threadengines/threadengine_pthread.cpp +++ b/src/threadengines/threadengine_pthread.cpp @@ -21,13 +21,8 @@ #include "inspircd.h" #include "threadengines/threadengine_pthread.h" #include -#include #include -ThreadEngine::ThreadEngine() -{ -} - static void* entry_point(void* parameter) { /* Recommended by nenolod, signal safety on a per-thread basis */ @@ -44,25 +39,14 @@ static void* entry_point(void* parameter) void ThreadEngine::Start(Thread* thread) { - ThreadData* data = new ThreadData; - thread->state = data; - - if (pthread_create(&data->pthread_id, NULL, entry_point, thread) != 0) - { - thread->state = NULL; - delete data; + if (pthread_create(&thread->state.pthread_id, NULL, entry_point, thread) != 0) throw CoreException("Unable to create new thread: " + std::string(strerror(errno))); - } -} - -ThreadEngine::~ThreadEngine() -{ } -void ThreadData::FreeThread(Thread* thread) +void ThreadEngine::Stop(Thread* thread) { thread->SetExitFlag(); - pthread_join(pthread_id, NULL); + pthread_join(thread->state.pthread_id, NULL); } #ifdef HAS_EVENTFD