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. Linux系统重要文件(三)

    一系统运行级别文件 文件路径:/etc/inittab 文件作用说明:定义系统启动后,自动开启哪些软件程序系统 runlevel 查看当前运行级别 centos6系统运行级别: 7个级别      0 ...

  2. 手机上访问angular移动项目

    要实现手机访问本地开发的移动端项目,首先做到两点: 1.本地打开的项目可以使用本地ip访问 2.手机和电脑同时处于一个同一个局域网中(手机和电脑同时连上同一个wifi / 手机开热点给电脑 / 电脑开 ...

  3. CoffeeScript编写简单新闻页(仅UI)

    CoffeeScript编写简单新闻页(仅UI) 1. 配置(在公司搭建好的环境下配置) omnisocials-backend/src/backend/modules/member/config/m ...

  4. jumpserver安装和使用

    jumpserver安装 #centos6 centos7都可用yum -y install git python-pip mysql-devel gcc automake autoconf pyth ...

  5. Scribd每月共有超过两亿个访客、累积数亿篇以上的文件档案,Alexa全球排名200以内

    目前已登上世界300大网站,每月共有超过两亿个访客.累积数亿篇以上的文件档案.透过Flash介面的阅读器-iPaper,使用者可以在网站内浏览各种文件,由于该网站是一个文件分享平台,所有的文件都是由使 ...

  6. STM32几个IO的工作模式

    浮空,顾名思义就是浮在空中,上面用绳子一拉就上去了,下面用绳子一拉就沉下去了.  开漏,就等于输出口接了个NPN三极管,并且只接了e,b. c极 是开路的,你可以接一个电阻到3.3V,也可以接一个电阻 ...

  7. ExportOptions.plis是什么?

    参考: 具体每个字段的说明,参考: https://group.cnblogs.com/topic/80752.html 为什么自动化打包时,需要用到ExportOptions.plis文件,参考: ...

  8. delphi 在代码中 添加 TO-DO 并且 管理

    TO-DO List是一项非常好用的功能.采用她可以让我们很清楚的了解以前完成了那些任务,还有哪些任务需要做,由谁负责完成,是不是比较紧急的任务等.今天来不及完成的,明天上班就可以很快的找到任务所在的 ...

  9. vue - blog开发学习6

    1.问题,如下图,使用iviewui中的card导致页面不能出现滚动条(不太会弄,在网上查了一个vue组件vuescroll,因此使用这个做滚动条) 2.安装vuescroll cnpm instal ...

  10. IT面试技巧(2)

    21.最能概括你自己的三个词是什么? 回答提示:我经常用的三个词是:适应能力强,有责任心和做事有始终,结合具体例子向主考官解释, 22.你的业余爱好是什么? 回答提示:找一些富于团体合作精神的,这里有 ...