diff options
author | madmaxoft@gmail.com <madmaxoft@gmail.com@0a769ca7-a7f5-676a-18bf-c427514a06d6> | 2012-02-01 13:25:26 +0100 |
---|---|---|
committer | madmaxoft@gmail.com <madmaxoft@gmail.com@0a769ca7-a7f5-676a-18bf-c427514a06d6> | 2012-02-01 13:25:26 +0100 |
commit | 83fc39219825532fbbbaa6a6af2942e82f350845 (patch) | |
tree | 6259e556c81ee1e9f98f5a98f5d963ed2b90775f /source/cIsThread.h | |
parent | cEvent: fixed wrong errorchecking in win32 Set() (diff) | |
download | cuberite-83fc39219825532fbbbaa6a6af2942e82f350845.tar cuberite-83fc39219825532fbbbaa6a6af2942e82f350845.tar.gz cuberite-83fc39219825532fbbbaa6a6af2942e82f350845.tar.bz2 cuberite-83fc39219825532fbbbaa6a6af2942e82f350845.tar.lz cuberite-83fc39219825532fbbbaa6a6af2942e82f350845.tar.xz cuberite-83fc39219825532fbbbaa6a6af2942e82f350845.tar.zst cuberite-83fc39219825532fbbbaa6a6af2942e82f350845.zip |
Diffstat (limited to 'source/cIsThread.h')
-rw-r--r-- | source/cIsThread.h | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/source/cIsThread.h b/source/cIsThread.h new file mode 100644 index 000000000..f46d7f065 --- /dev/null +++ b/source/cIsThread.h @@ -0,0 +1,77 @@ +
+// cIsThread.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 mShouldTerminate; // 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
+
+private:
+ AString mThreadName;
+ cEvent mEvent; // This event is set when the thread begins executing
+
+ #ifdef _WIN32
+
+ HANDLE mHandle;
+
+ static DWORD_PTR __stdcall thrExecute(LPVOID iParam)
+ {
+ ((cIsThread *)iParam)->Execute();
+ return 0;
+ }
+
+ #else // _WIN32
+
+ pthread_t mHandle;
+ bool mHasStarted;
+
+ static void * thrExecute(void * iParam)
+ {
+ ((cIsThread *)iParam)->Execute();
+ return NULL;
+ }
+
+ #endif // else _WIN32
+
+} ;
+
+
+
+
+
+#endif // CISTHREAD_H_INCLUDED
+
+
+
+
|