automotive-message-broker  0.14.803
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Groups Pages
thread.h
1 /*
2 Copyright (C) 2012 Intel Corporation
3 
4 This library is free software; you can redistribute it and/or
5 modify it under the terms of the GNU Lesser General Public
6 License as published by the Free Software Foundation; either
7 version 2.1 of the License, or (at your option) any later version.
8 
9 This library is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 Lesser General Public License for more details.
13 
14 You should have received a copy of the GNU Lesser General Public
15 License along with this library; if not, write to the Free Software
16 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
17 */
18 
19 #ifndef _CUTIL_THREAD_H_
20 #define _CUTIL_THREAD_H_
21 
22 #include <pthread.h>
23 #include <sys/prctl.h>
24 #include "logger.h"
25 
30 namespace CUtil {
31 
38 class Thread
39 {
45  pthread_cond_t cond;
51  pthread_mutex_t mutex;
57  pthread_t thread;
63  bool runnableFlag;
64 
65 private:
66 
74  bool setRunnableFlag(bool flag);
75 
83  bool wait( long miliseconds );
84 
85 public:
86 
92  virtual void run() = 0;
93 
94 protected:
95 
114  bool isRunnable(long miliseconds = 0);
115 
116 public:
117 
118  Thread();
119  virtual ~Thread();
120 
127  virtual bool start();
128 
136  bool setPriority(int priority);
137 
143  virtual void stop();
144 
151  bool restart()
152  {
153  stop();
154  return start();
155  }
156 };
157 
158 }
159 
160 #endif
161