aboutsummaryrefslogtreecommitdiff
path: root/src/shared/Mthread.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/shared/Mthread.h')
-rw-r--r--src/shared/Mthread.h62
1 files changed, 62 insertions, 0 deletions
diff --git a/src/shared/Mthread.h b/src/shared/Mthread.h
new file mode 100644
index 00000000000..1afee4acd1b
--- /dev/null
+++ b/src/shared/Mthread.h
@@ -0,0 +1,62 @@
+#ifndef MTHREAD_H
+#define MTHREAD_H
+
+#include "Base.h"
+#ifndef WIN32
+#include <pthread.h>
+#else
+#include <windows.h>
+//#include "Process.h"
+#define WIN32_THREAD_STACK_SIZE 0x10000
+#endif
+
+enum ThreadPriority
+{
+ IDLE,
+ LOWER,
+ LOW,
+ NORMAL,
+ HIGH,
+ HIGHER,
+ REALTIME
+};
+
+class MThread: public Base
+{
+ public:
+ static MThread *Start (void (*routine) (void *arg), void *arg);
+ MThread ();
+ ~MThread ();
+ bool SetPriority (ThreadPriority prio);
+
+ void (*routine) (void *arg);
+ void *arg;
+
+ #ifdef WIN32
+ HANDLE th;
+ ULONG id;
+ #else
+ pthread_t tid;
+ #endif
+
+};
+
+class MMutex : public Base
+{
+ public:
+
+ #ifdef WIN32
+ HANDLE sem;
+ #else
+ pthread_mutex_t mutex;
+ static pthread_mutexattr_t attr;
+ static int attr_refcount;
+ #endif
+ static MMutex *Create ();
+ MMutex ();
+ virtual ~MMutex ();
+ virtual bool Lock ();
+ virtual bool TryLock ();
+ virtual void Unlock ();
+};
+#endif // MTHREAD_H