X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=include%2Fthreadengine.h;h=0c2d26ce6e14f4546cb8b5a952c3ac40372838b4;hb=635cb9d65f6d7f6758ae8ed874da00c8d94b6e39;hp=39f150566bc17ed52dff736fa2e416147958d1f8;hpb=1031f333332cf1b09db4fd632f141143ee637c34;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/include/threadengine.h b/include/threadengine.h index 39f150566..0c2d26ce6 100644 --- a/include/threadengine.h +++ b/include/threadengine.h @@ -1,8 +1,11 @@ /* * InspIRCd -- Internet Relay Chat Daemon * - * Copyright (C) 2009 Daniel De Graaf - * Copyright (C) 2008 Craig Edwards + * Copyright (C) 2014 Attila Molnar + * Copyright (C) 2013, 2017 Sadie Powell + * Copyright (C) 2012 Robby + * Copyright (C) 2009-2010 Daniel De Graaf + * Copyright (C) 2008 Craig Edwards * * This file is part of InspIRCd. InspIRCd is free software: you can * redistribute it and/or modify it under the terms of the GNU General Public @@ -20,14 +23,8 @@ #pragma once -#include -#include -#include -#include "config.h" #include "base.h" -class ThreadData; - /** Derive from this class to implement your own threaded sections of * code. Be sure to keep your code thread-safe and not prone to deadlocks * and race conditions if you MUST use threading! @@ -38,6 +35,15 @@ class CoreExport Thread /** Set to true when the thread is to exit */ bool ExitFlag; + + /** Opaque thread state managed by the ThreadEngine + */ + ThreadEngine::ThreadState state; + + /** ThreadEngine manages Thread::state + */ + friend class ThreadEngine; + protected: /** Get thread's current exit status. * (are we being asked to exit?) @@ -47,19 +53,12 @@ class CoreExport Thread return ExitFlag; } public: - /** Opaque thread state managed by threading engine - */ - ThreadData* state; - /** Set Creator to NULL at this point */ - Thread() : ExitFlag(false), state(NULL) + Thread() : ExitFlag(false) { } - /* If the thread is running, you MUST join BEFORE deletion */ - virtual ~Thread(); - /** Override this method to put your actual * threaded code here. */ @@ -108,7 +107,7 @@ class CoreExport QueuedThread : public Thread queue.Wakeup(); queue.Unlock(); } - virtual void SetExitFlag() + void SetExitFlag() CXX11_OVERRIDE { queue.Lock(); Thread::SetExitFlag(); @@ -157,7 +156,7 @@ class CoreExport SocketThread : public Thread queue.Wakeup(); queue.Unlock(); } - virtual void SetExitFlag() + void SetExitFlag() CXX11_OVERRIDE { queue.Lock(); Thread::SetExitFlag();