diff options
author | madmaxoft@gmail.com <madmaxoft@gmail.com@0a769ca7-a7f5-676a-18bf-c427514a06d6> | 2012-09-23 23:23:33 +0200 |
---|---|---|
committer | madmaxoft@gmail.com <madmaxoft@gmail.com@0a769ca7-a7f5-676a-18bf-c427514a06d6> | 2012-09-23 23:23:33 +0200 |
commit | 7abb5f7604bb9a0a716e89f3b27e330b016a38b9 (patch) | |
tree | 7ccaea302b953c239a0d60548b6f7bcaf72e6527 /source/OSSupport/IsThread.h | |
parent | Source files cleanup: Removed unused cBlockToPickup (diff) | |
download | cuberite-7abb5f7604bb9a0a716e89f3b27e330b016a38b9.tar cuberite-7abb5f7604bb9a0a716e89f3b27e330b016a38b9.tar.gz cuberite-7abb5f7604bb9a0a716e89f3b27e330b016a38b9.tar.bz2 cuberite-7abb5f7604bb9a0a716e89f3b27e330b016a38b9.tar.lz cuberite-7abb5f7604bb9a0a716e89f3b27e330b016a38b9.tar.xz cuberite-7abb5f7604bb9a0a716e89f3b27e330b016a38b9.tar.zst cuberite-7abb5f7604bb9a0a716e89f3b27e330b016a38b9.zip |
Diffstat (limited to 'source/OSSupport/IsThread.h')
-rw-r--r-- | source/OSSupport/IsThread.h | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/source/OSSupport/IsThread.h b/source/OSSupport/IsThread.h new file mode 100644 index 000000000..ed9a32852 --- /dev/null +++ b/source/OSSupport/IsThread.h @@ -0,0 +1,78 @@ + +// IsThread.h + +// Interfaces to the cIsThread class representing an OS-independent wrapper for a class that implements a thread. +// This class will eventually suupersede the old cThread class + +/* +Usage: +To have a new thread, declare a class descending from cIsClass. +Then override its Execute() method to provide your thread processing. +In the descending class' constructor call the Start() method to start the thread once you're finished with initialization. +*/ + + + + + +#pragma once +#ifndef CISTHREAD_H_INCLUDED +#define CISTHREAD_H_INCLUDED + + + + + +class cIsThread +{ +protected: + virtual void Execute(void) = 0; // This function is called in the new thread's context + + volatile bool m_ShouldTerminate; // The overriden Execute() method should check this periodically and terminate if this is true + +public: + cIsThread(const AString & iThreadName); + ~cIsThread(); + + bool Start(void); // Starts the thread + bool Wait(void); // Waits for the thread to finish + + static unsigned long GetCurrentID(void); // Returns the OS-dependent thread ID for the caller's thread + +private: + AString m_ThreadName; + + #ifdef _WIN32 + + HANDLE m_Handle; + + static DWORD_PTR __stdcall thrExecute(LPVOID a_Param) + { + ((cIsThread *)a_Param)->Execute(); + return 0; + } + + #else // _WIN32 + + pthread_t m_Handle; + bool m_HasStarted; + + static void * thrExecute(void * a_Param) + { + ((cIsThread *)a_Param)->Execute(); + return NULL; + } + + #endif // else _WIN32 + +} ; + + + + + +#endif // CISTHREAD_H_INCLUDED + + + + |