OpenRTM-aist  1.2.1
PeriodicTask.h
[詳解]
1 // -*- C++ -*-
20 #ifndef COIL_PERIODICTASK_H
21 #define COIL_PERIODICTASK_H
22 
23 #include <map>
24 #include <string>
25 #include <vector>
26 #include <algorithm>
27 
28 #include <coil/Mutex.h>
29 #include <coil/Guard.h>
30 #include <coil/Condition.h>
31 #include <coil/TimeValue.h>
32 #include <coil/TimeMeasure.h>
33 #include <coil/PeriodicTaskBase.h>
34 
35 namespace coil
36 {
62  : public coil::PeriodicTaskBase
63  {
64  public:
66 
82  PeriodicTask();
83 
99  virtual ~PeriodicTask();
100 
123  virtual void activate();
124 
138  virtual void finalize();
139 
153  virtual int suspend(void);
154 
168  virtual int resume(void);
169 
183  virtual void signal();
184 
198  virtual bool setTask(TaskFuncBase* func, bool delete_in_dtor = true);
199 
217  template <class O, class F>
218  bool setTask(O* obj, F fun)
219  {
220  return this->setTask(new TaskFunc<O, F>(obj, fun));
221  }
222 
236  virtual void setPeriod(double period);
237 
251  virtual void setPeriod(TimeValue& period);
252 
260  virtual void executionMeasure(bool value);
261 
269  virtual void executionMeasureCount(int n);
270 
278  virtual void periodicMeasure(bool value);
279 
287  virtual void periodicMeasureCount(int n);
288 
297 
306 
307  protected:
315  virtual int svc();
316 
324  virtual void sleep();
325 
333  virtual void updateExecStat();
334 
342  virtual void updatePeriodStat();
343 
344  protected:
353 
361  bool m_nowait;
362 
371 
380 
390  class alive_t
391  {
392  public:
393  alive_t(bool val) : value(val) {}
394  bool value;
396  };
397 
406 
414  struct suspend_t
415  {
416  suspend_t(bool sus) : suspend(sus), mutex(), cond(mutex) {}
417  bool suspend;
420  };
421 
430 
439  {
442  };
443 
452 
460  unsigned int m_execCount;
461 
469  unsigned int m_execCountMax;
470 
479 
488 
497 
505  unsigned int m_periodCount;
506 
514  unsigned int m_periodCountMax;
515 
524 
533 
534  };
535 
536 }; // namespace coil
537 
538 #endif // COIL_PERIODICTASK_H
PeriodicTask()
コンストラクタ
virtual void signal()
中断されているタスクを1周期だけ実行する
bool m_deleteInDtor
タスク実行関数削除フラグ
Definition: PeriodicTask.h:379
coil::TimeMeasure m_periodTime
タスク周期時間計測情報
Definition: PeriodicTask.h:532
virtual void updatePeriodStat()
周期状態更新
unsigned int m_execCountMax
タスク実行時間計測周期
Definition: PeriodicTask.h:469
TaskFuncBase クラス
Definition: PeriodicTaskBase.h:42
virtual void executionMeasure(bool value)
タスク関数実行時間計測を有効にするか
時間統計用構造体
Definition: TimeMeasure.h:63
TaskFuncBase TaskFunc PeriodicTaskBase class.
Mutex クラス
Definition: Mutex.h:40
virtual void setPeriod(double period)
タスク実行周期をセットする
virtual int suspend(void)
タスク実行を中断する
coil::Condition< coil::Mutex > cond
Definition: PeriodicTask.h:419
unsigned int m_execCount
タスク実行時間計測回数
Definition: PeriodicTask.h:460
Periodic time measurement class.
coil::Guard< coil::Mutex > Guard
Definition: PeriodicTask.h:65
virtual int resume(void)
中断されているタスクを再開する
TaskFunc テンプレートクラス
Definition: PeriodicTaskBase.h:94
bool m_nowait
スレッド休止フラグ
Definition: PeriodicTask.h:361
virtual bool setTask(TaskFuncBase *func, bool delete_in_dtor=true)
タスク実行関数をセットする
alive_t クラス
Definition: PeriodicTask.h:390
TimeValue クラス
Definition: TimeValue.h:40
alive_t(bool val)
Definition: PeriodicTask.h:393
virtual TimeMeasure::Statistics getPeriodStat()
タスク周期時間計測結果を取得
bool value
Definition: PeriodicTask.h:394
virtual void updateExecStat()
実行状態更新
statistics_t m_execStat
タスク実行時間計測統計
Definition: PeriodicTask.h:478
coil::TimeMeasure::Statistics stat
Definition: PeriodicTask.h:440
unsigned int m_periodCount
タスク周期時間計測回数
Definition: PeriodicTask.h:505
bool suspend
Definition: PeriodicTask.h:417
coil::TimeValue m_period
タスク実行周期
Definition: PeriodicTask.h:352
virtual void periodicMeasureCount(int n)
タスク周期時間計測周期
suspend_t(bool sus)
Definition: PeriodicTask.h:416
virtual TimeMeasure::Statistics getExecStat()
タスク関数実行時間計測結果を取得
bool setTask(O *obj, F fun)
タスク実行関数をセットする
Definition: PeriodicTask.h:218
unsigned int m_periodCountMax
タスク周期時間計測最大数
Definition: PeriodicTask.h:514
タスク中断管理用構造体
Definition: PeriodicTask.h:414
Guard template class.
virtual int svc()
PeriodicTask 用のスレッド実行
coil::Mutex mutex
Definition: PeriodicTask.h:395
statistics_t m_periodStat
タスク周期時間計測統計
Definition: PeriodicTask.h:523
PeriodicTaskBase クラス
Definition: PeriodicTaskBase.h:193
bool m_execMeasure
タスク実行時間計測フラグ
Definition: PeriodicTask.h:451
virtual void periodicMeasure(bool value)
タスク周期時間計測を有効にするか
virtual void executionMeasureCount(int n)
タスク関数実行時間計測周期
coil::Mutex mutex
Definition: PeriodicTask.h:441
coil::TimeMeasure m_execTime
タスク実行時間計測情報
Definition: PeriodicTask.h:487
coil::Mutex mutex
Definition: PeriodicTask.h:418
TaskFuncBase * m_func
タスク実行関数
Definition: PeriodicTask.h:370
suspend_t m_suspend
タスク中断情報
Definition: PeriodicTask.h:429
TimeMeasure クラス
Definition: TimeMeasure.h:49
virtual void sleep()
スレッド休止
bool m_periodMeasure
タスク周期時間計測フラグ
Definition: PeriodicTask.h:496
タスク実行時間計測管理用構造体
Definition: PeriodicTask.h:438
virtual void activate()
タスク実行を開始する
virtual ~PeriodicTask()
デストラクタ
alive_t m_alive
タスク生存フラグ
Definition: PeriodicTask.h:405
周期タスクスレッド実行クラス
Definition: PeriodicTask.h:61
virtual void finalize()
タスク実行を終了する
Common Object Interface Layer.
Definition: Affinity.h:28