OpenBarnyard
 
Loading...
Searching...
No Matches
TThread_Win.h
Go to the documentation of this file.
1#pragma once
2
3#include <Windows.h>
4
5#undef THREAD_MODE_BACKGROUND_BEGIN
6#undef THREAD_MODE_BACKGROUND_END
7#undef THREAD_PRIORITY_ABOVE_NORMAL
8#undef THREAD_PRIORITY_BELOW_NORMAL
9#undef THREAD_PRIORITY_HIGHEST
10#undef THREAD_PRIORITY_IDLE
11#undef THREAD_PRIORITY_LOWEST
12#undef THREAD_PRIORITY_NORMAL
13#undef THREAD_PRIORITY_TIME_CRITICAL
14
15#include "Toshi/T2DList.h"
16
18
19class TThread : public T2DList<TThread>::Node
20{
21public:
22 typedef TINT PRIORITY;
35
36public:
37 virtual void Main() = 0;
38 virtual ~TThread(){};
39
40 TBOOL Create( size_t a_iStackSize, PRIORITY a_ePriority, TUINT8 a_eFlags );
41 TBOOL Destroy();
42
43 static TBOOL GetPriority( void* a_hThreadHnd, PRIORITY& a_ePriority );
44 static TBOOL SetPriority( void* a_hThreadHnd, PRIORITY a_ePriority );
45
46 static void Exit( TThread* a_pThread );
47 //static void Sleep(TINT milliSeconds) { usleep(100); }
48
49 void* m_hThreadHnd; // 0xC
50 unsigned long m_iThreadID; // 0x10
51};
52
53class TThreadManager : public TSingleton<TThreadManager>
54{
55public:
57
58 void Create();
59 void Delete();
60
61 void RemoveThread( TThread* a_pThread );
62 void InsertThread( TThread* a_pThread );
63
64 friend class TThread;
65
66private:
67 CRITICAL_SECTION m_CriticalSection;
68 T2DList<TThread> m_Threads;
69};
70
#define TOSHI_NAMESPACE_START
Definition Defines.h:47
#define TOSHI_NAMESPACE_END
Definition Defines.h:50
uint8_t TUINT8
Definition Typedefs.h:17
int TINT
Definition Typedefs.h:7
bool TBOOL
Definition Typedefs.h:6
virtual ~TThread()
Definition TThread_Win.h:38
unsigned long m_iThreadID
Definition TThread_Win.h:50
virtual void Main()=0
@ THREAD_PRIORITY_ABOVE_NORMAL
Definition TThread_Win.h:27
@ THREAD_MODE_BACKGROUND_END
Definition TThread_Win.h:26
@ THREAD_MODE_BACKGROUND_BEGIN
Definition TThread_Win.h:25
@ THREAD_PRIORITY_BELOW_NORMAL
Definition TThread_Win.h:28
@ THREAD_PRIORITY_HIGHEST
Definition TThread_Win.h:29
@ THREAD_PRIORITY_NORMAL
Definition TThread_Win.h:32
@ THREAD_PRIORITY_TIME_CRITICAL
Definition TThread_Win.h:33
@ THREAD_PRIORITY_LOWEST
Definition TThread_Win.h:31
@ THREAD_PRIORITY_IDLE
Definition TThread_Win.h:30
TBOOL Create(size_t a_iStackSize, PRIORITY a_ePriority, TUINT8 a_eFlags)
static void Exit(TThread *a_pThread)
static TBOOL SetPriority(void *a_hThreadHnd, PRIORITY a_ePriority)
TINT PRIORITY
Definition TThread_Win.h:22
TBOOL Destroy()
static TBOOL GetPriority(void *a_hThreadHnd, PRIORITY &a_ePriority)
void * m_hThreadHnd
Definition TThread_Win.h:49
friend class TThread
Definition TThread_Win.h:64
void RemoveThread(TThread *a_pThread)
void InsertThread(TThread *a_pThread)
constexpr Node()
Definition T2DList.h:26
friend class T2DList
Definition T2DList.h:22
TSingleton(const TSingleton &)=delete