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. };

src/lib/framework/src/driverFramework.cpp学习的更多相关文章

  1. laravel5.5 使用alipay SDK报错Cannot redeclare Encrypt() (previously declared in ../vendor/laravel/framework/src/Illuminate/Foundation/helpers.php:448)

    错误现象: 在laravel5.5 中,使用alipaySDK 报错: Cannot redeclare Encrypt() (previously declared in ../vendor/lar ...

  2. Spring Framework 官方文档学习(四)之Validation、Data Binding、Type Conversion(一)

    题外话:本篇是对之前那篇的重排版.并拆分成两篇,免得没了看的兴趣. 前言 在Spring Framework官方文档中,这三者是放到一起讲的,但没有解释为什么放到一起.大概是默认了读者都是有相关经验的 ...

  3. Spring Framework 官方文档学习(四)之Validation、Data Binding、Type Conversion(二)

    接前一篇 Spring Framework 官方文档学习(四)之Validation.Data Binding.Type Conversion(一) 本篇主要内容:Spring Type Conver ...

  4. Spring Framework 官方文档学习(四)之Validation、Data Binding、Type Conversion

    本篇太乱,请移步: Spring Framework 官方文档学习(四)之Validation.Data Binding.Type Conversion(一) 写了删删了写,反复几次,对自己的描述很不 ...

  5. <CPP学习>第一天 第一个CPP程序 hello word

    由于我是计算机类嵌入式专业的大一学生,之前一直使用的是生万物的C语言,了解了其过程性语言的特性及其基础语法,在大一下学期期末阶段想自学一下C++,其实在开学初就买了一本C++ Primer,但由于各种 ...

  6. Entity Framework 6源码学习--设置调试EF环境

    下载源代码 打开https://github.com/aspnet/EntityFramework6下载源代码. 建立调试解决方案 建立一个EntityFramework.Sample.sln在Ent ...

  7. 关于为什么window.frames[0].src不能获取src

    在DOM文档对象模型中,window对象处于最高层,而框架除了是当前窗体的一个节点外,本身也是独立window对象,当frames作为window对象时,有name属性, 而没有src属性,只有作为节 ...

  8. 如何在项目中引入 #include .h、.lib、 .dll、.cpp (转)

    源:http://blog.csdn.net/vippolka/article/details/8552735 在项目中引入.h..lib和dll.以及.cpp 1..h的引入 解决办法1:把  XX ...

  9. java 正则表达式获得html字符串中<img src>中的src中的url地址

    public static Set<String> getImgStr(String htmlStr) { Set<String> pics = new HashSet< ...

随机推荐

  1. 写在Flutter 1.0之前

    开始 大概有半年没有写东西了,感觉时间过得飞快,18年也过一小半,趁着谷歌大会再为Flutter这个耀眼的新星,再吹一波! 都beta3了,1.0还会远吗 Flutter团队依然不紧不慢,一步一个脚印 ...

  2. 第二章(1.3)Python基础知识(输入输出)

    一.?输出 用print加上字符串,就可以向屏幕上输出指定的文字 print?'hello, world' print也可以打印整数. >>> print?300 二.?输入 Pyt ...

  3. python and 用法

    >>> 1 and [] and [1] [] >>> 1 and [2] and [1] [1] >>> 0 and [1] and [2] 0

  4. mysql隔离级别相关

    1.原子性.隔离性.一致性.持久性 2.mysql并发控制可能出现的问题: 脏读(A事务读取到B事务未commit的数据后,B事务回滚) 不可重复读(A事务第一次读到的数据,被B事务更新数据后,第二次 ...

  5. 【SpringBoot】SpringBoot的基础,全面理解bean的生命周期

    前言 前段时间直接上手使用springboot开发了一个数据平台的后台部分,但是自身对于springboot的原理和过程还不是很清晰,所以反过来学习下springboot的基础. 大家都知道sprin ...

  6. vue搭建项目之设置axios

    首先要下载axios: npm install axios -S 要注意的是,axios不支持Vue.use();这种方式,可以改写原型链. 第二步就是新建axios存放位置: 在项目中src中单独建 ...

  7. Html5 学习笔记 【PC固定布局】 实战6 咨询页面

    最终效果: Html页面代码: <!DOCTYPE html> <html lang="zh-cn"> <head> <meta char ...

  8. EasyUI的datagrid表格行高度增加

    这里以easyui的default样式为例: 找到easyui--->themes-->default-->easyui.css-->Ctrl+F找到.datagrid-row ...

  9. python使用消息队列RabbitMq(进阶)

    import pika connection = pika.BlockingConnection(pika.ConnectionParameters( 'localhost')) channel = ...

  10. IPython notebook在浏览器中显示不正常的问题及解决方法

    使用过Python的童鞋们应该知道IPython是一个比python自带的交互式界面更加友好的交互界面,IPython提供了自动补齐什么的,其实我还没开始用所以这里也不扯淡了,大家自己去网上查,IPy ...