rad  2.0.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
pthreadActivity.hpp
Go to the documentation of this file.
1 
9 #ifndef RAD_ACTIVITY_PTHREAD_HPP
10 #define RAD_ACTIVITY_PTHREAD_HPP
11 
12 #include <rad/activity.hpp>
13 
14 #include <scxml4cpp/Activity.h>
15 #include <scxml4cpp/Event.h>
16 
17 #include <pthread.h>
18 
19 #include <atomic>
20 #include <string>
21 
22 namespace rad {
23 
32  public:
33  explicit PthreadActivity(const std::string& id, const int cpu = -1, const int priotity = -1);
34 
35  virtual ~PthreadActivity();
36 
37  virtual void Run() = 0;
38 
39  std::string GetName();
40  int SetName(const std::string& name);
41 
42  int GetCPU() const;
43  int GetConfiguredCPU() const;
44  void SetConfiguredCPU(const int cpu);
45  int GetPriority();
46  int GetConfiguredPriority() const;
47  void SetConfiguredPriority(const int priority);
48 
52  pthread_t GetNativeHandle() const override;
53 
54  PthreadActivity(const PthreadActivity&) = delete;
55  PthreadActivity& operator=(const PthreadActivity&) = delete;
56 
57  protected:
58  void StartThread() override;
59  void JoinThread() override;
60  bool IsThreadJoined() const override;
61 
62  private:
63  std::atomic<bool> m_thread_id_valid;
64  pthread_t m_thread_id;
65  int m_cpu;
66  int m_priority;
67 
68  static void* RunWrapper(void* arg);
69 };
70 
71 } // namespace rad
72 
73 #endif // RAD_ACTIVITY_PTHREAD_HPP
void SetConfiguredCPU(const int cpu)
Definition: pthreadActivity.cpp:307
std::string GetName()
Definition: pthreadActivity.cpp:238
void SetConfiguredPriority(const int priority)
Definition: pthreadActivity.cpp:349
int GetPriority()
Definition: pthreadActivity.cpp:315
PthreadActivity(const std::string &id, const int cpu=-1, const int priotity=-1)
Definition: pthreadActivity.cpp:31
pthread_t GetNativeHandle() const override
Definition: pthreadActivity.cpp:48
int GetCPU() const
Definition: pthreadActivity.cpp:290
int GetConfiguredPriority() const
Definition: pthreadActivity.cpp:340
virtual ~PthreadActivity()
Definition: pthreadActivity.cpp:43
void JoinThread() override
Definition: pthreadActivity.cpp:204
int GetConfiguredCPU() const
Definition: pthreadActivity.cpp:298
void StartThread() override
Disable assignment operator.
Definition: pthreadActivity.cpp:56
bool IsThreadJoined() const override
Definition: pthreadActivity.cpp:196
Definition: pthreadActivity.hpp:31
PthreadActivity & operator=(const PthreadActivity &)=delete
Disable copy constructor.
virtual void Run()=0
Definition: activity.hpp:39
int SetName(const std::string &name)
Definition: pthreadActivity.cpp:261