ZenLib
Thread.h
Go to the documentation of this file.
1 /* Copyright (c) MediaArea.net SARL. All Rights Reserved.
2  *
3  * Use of this source code is governed by a zlib-style license that can
4  * be found in the License.txt file in the root of the source tree.
5  */
6 
7 //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
8 //
9 // Thread functions
10 //
11 //+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
12 
13 //---------------------------------------------------------------------------
14 #ifndef ZenLib_ThreadH
15 #define ZenLib_ThreadH
16 //---------------------------------------------------------------------------
17 #include "ZenLib/Conf.h"
18 #include "ZenLib/CriticalSection.h"
19 #ifdef _WINDOWS
20  #undef Yield
21 #endif
22 //---------------------------------------------------------------------------
23 
24 namespace ZenLib
25 {
26 
27 //***************************************************************************
28 /// @brief Thread manipulation
29 //***************************************************************************
30 
31 class Thread
32 {
33 public :
34  //Constructor/Destructor
35  Thread ();
36  virtual ~Thread ();
37 
38  //Control
40  {
41  Ok,
45  };
46  returnvalue Run();
51 
52  //Status
53  bool IsRunning();
54  bool IsTerminating();
55  bool IsExited();
56 
57  //Configuration
58  void Priority_Set(int8s Priority); //-100 to +100
59 
60  //Main Entry
61  virtual void Entry();
62 
63  //Internal
64  returnvalue Internal_Exit(); //Do not use it
65 
66 protected :
67 
68  //Communicating
69  void Sleep(std::size_t Millisecond);
70  void Yield();
71 
72 private :
73  //Internal
74  void* ThreadPointer;
75 
76  //The possible states of the thread ("-->" shows all possible transitions from this state)
77  enum state
78  {
79  State_New, // didn't start execution yet (--> Running)
80  State_Running, // thread is running (--> Paused, Terminating)
81  State_Paused, // thread is temporarily suspended (--> Running)
82  State_Terminating, // thread should terminate a.s.a.p. (--> Terminated)
83  State_Terminated, // thread is terminated
84  };
85  state State;
86  CriticalSection C;
87 };
88 
89 } //NameSpace
90 
91 #endif