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. python如何在shell命令行执行创建用户命令

  2. Code Review怎样做好

    一.背景 最近随着交易业务快速扩展,研发组内新项目及新成员越来越多,如何做好Code Review,把控研发人员开发代码质量很是关键. 对于大部分业务团队,谈到Code Review就会面露哀状:   ...

  3. 从React Native到微服务,落地一个全栈解决方案

    Poplar是一个社交主题的内容社区,但自身并不做社区,旨在提供可快速二次开发的开源基础套件.前端基于React Native与Redux构建,后端由Spring Boot.Dubbo.Zookeep ...

  4. VLOOUP

    VLOOKUP函数是Excel中的一个纵向查找函数 该函数的语法规则如下:VLOOKUP(lookup_value,table_array,col_index_num,range_lookup) 参数 ...

  5. TP中如何用IF

    将TP中这个容易忘的知识点记下来以便日后翻阅 $memberField = "ID, NAME, MOBILE, MEMBER_STATUS as status, IF (MEMBER_ST ...

  6. Java反射之方法反射demo

    package reflect; import java.lang.reflect.Method; public class ClassDemo3 { public static void main( ...

  7. mysql 查询结果增加自动递增的一列,排名,排序

      mysql中有时候需要对查询的结果排序,比如根据成绩获取排名信息等,需要增加一个自增的列,也就是排名信息 ; as sortid FROM a; 如果不支持写两条sql,可以用以下写法合成一条sq ...

  8. 记录MNIST实现与理解

    之前半个月的时间几乎都在看理论书籍,最近两天开始撸代码,一个跟Hello World同级别的教程例子就出来了,那就是MNIST.实现代码应该很多地方都有: #!/usr/bin/env python ...

  9. [题解]Yet Another Subarray Problem-DP 、思维(codeforces 1197D)

    题目链接:https://codeforces.com/problemset/problem/1197/D 题意: 给你一个序列,求一个子序列 a[l]~a[r] 使得该子序列的 sum(l,r)-k ...

  10. Percona XtraDB Cluster集群5.7 开启SSL认证

    mysqldump -uroot -p --ssl-cert=/data/mysql/client-cert.pem --ssl-key=/data/mysql/client-key.pem -h 1 ...