Chinaunix首页 | 论坛 | 博客
  • 博客访问: 498801
  • 博文数量: 223
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 2145
  • 用 户 组: 普通用户
  • 注册时间: 2014-03-01 10:23
个人简介

该坚持的时候坚持,该妥协的时候妥协,该放弃的时候放弃

文章分类

全部博文(223)

文章存档

2017年(56)

2016年(118)

2015年(3)

2014年(46)

我的朋友

分类: 嵌入式

2017-07-20 22:19:58


  1. int Framework::initialize()
  2. {
  3.     DF_LOG_DEBUG("Framework::initialize");

  4.     g_framework = new SyncObj;                                                    //这个应该是各同步类

  5.     if (!g_framework) {
  6.         DF_LOG_ERR("ERROR: falled to allocate g_framework");
  7.         return -1;
  8.     }

  9.     g_run_status = new RunStatus;                                                //这个是状态标识

  10.     if (!g_run_status) {
  11.         DF_LOG_ERR("g_run_status allocation failed");
  12.         return -2;
  13.     }

  14.     struct timespec ts = {};

  15.     int ret = absoluteTime(ts);                                                   //获取绝对时间

  16.     if (ret != 0) {
  17.         DF_LOG_ERR("ERROR: absoluteTime returned (%d)", ret);
  18.         return -4;
  19.     }

  20.     ret = HRTWorkQueue::instance().initialize();                                //初始化worker的线程

  21.     if (ret < 0) {
  22.         return ret - 10;
  23.     }

  24.     DF_LOG_DEBUG("Calling DevMgr::initialize");
  25.     ret = DevMgr::initialize();                                                    //加了一个标志位true

  26.     if (ret < 0) {
  27.         return ret - 20;
  28.     }

  29.     DF_LOG_DEBUG("Calling WorkMgr::initialize");
  30.     ret = WorkMgr::initialize();                                                    //这里也加了一个标志位true

  31.     if (ret < 0) {
  32.         return ret - 30;
  33.     }

  34.     return 0;
  35. }

  1. class SyncObj
  2. {
  3. public:
  4.     SyncObj();                                                    //构造函数
  5.     ~SyncObj() = default;

  6.     void lock();                                                //对Mutex上锁
  7.     void unlock();                                              //解锁

  8.     // Returns 0 on success, ETIMEDOUT on timeout                //返回0成功, ETIMEDOUT是超时
  9.     // Use timeout_us = 0 for blocking wait                    //使用timeout_us =0作为阻塞等待
  10.     int waitOnSignal(unsigned long timeout_us);

  11.     void signal();

  12. private:
  13.     pthread_mutex_t m_lock{};                                    //这个大括号是C++11,统一初始化
  14.     pthread_cond_t    m_new_data_cond{};
  15. };

阅读(709) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~