基于C++11的事件驱动框架

Posted 写了程序换酒钱

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于C++11的事件驱动框架相关的知识,希望对你有一定的参考价值。

嵌入式开发中对资源是有严格的要求的,在学校的时候一直使用qt,可是qt库越来越大,在一些低端的嵌入式设备上,我们可能只是简单的几个界面。这里我想基于opengl开发一个简单的程序框架,用来开速开发嵌入式系统应用。本项目现在已经实现了事件循环系统,并且可以正常工作。

小弟第一次搭建UI框架,可是资料太少,不知如何下手。

项目地址:
https://github.com/ZhouBox/moos.git

下面简单的说明下。
.
├── base
│ ├── appframework
│ │ ├── include
│ │ │ └── moos_application.h
│ │ └── moos_application.cpp
│ └── core
│ ├── include
│ │ ├── moos_defines.h
│ │ ├── moos_logger.h
│ │ ├── moos_looper.h
│ │ ├── moos_object.h
│ │ ├── moos_signal.h
│ │ ├── moos_task.h
│ │ ├── moos_task_policy.h
│ │ ├── moos_task_queue.h
│ │ ├── moos_tasktype.h
│ │ └── moos_thread.h
│ └── moos_looper.cpp
├── graphic
│ ├── engine
│ │ ├── include
│ │ │ ├── moos_paintdevice.h
│ │ │ ├── moos_paintengine.h
│ │ │ └── moos_painter.h
│ │ └── moos_paintengine.cpp
│ └── ui
│ ├── include
│ │ ├── moos_graphic_button.h
│ │ ├── moos_graphic_item.h
│ │ ├── moos_point.h
│ │ └── moos_size.h
│ ├── moos_graphic_button.cpp
│ ├── moos_graphic_item.cpp
│ ├── moos_point.cpp
│ └── moos_size.cpp
├── main.cpp
├── moos.pro
├── moos.pro.user
└── README.md

10 directories, 29 files

这个整个项目的结构。基本分为图形相关和支持相关。
engine我想对opengl操作进行封装,实现基本的点线绘制。
ui实现常用控件。还是就是窗口系统,这个是个很大的课题,本想使用glut。

task完成实现对事件循环的一个任务的封装。
task_policy实现了各种task的策略。
task_queue是事件队列
looper是一个事件循环。
moos_thread是对c++11中thread的封装,前面提到过。

其实这种形式的事件循环在嵌入式系统中广泛使用。后续还会继续完善这个事件循环例子。

最新版本:支持对象线程绑定,线程转换和signal-slot形式的调用
正在学习opengl,打算基于此开发UI框架。

以上是关于基于C++11的事件驱动框架的主要内容,如果未能解决你的问题,请参考以下文章

单一工作流的执行?回滚框架初步想法(基于事件驱动模式)

i.MX6ULL驱动开发 | 11 - Linux I2C 驱动框架

i.MX6ULL驱动开发 | 11 - Linux I2C 驱动框架

基于事件驱动的YARN并发模型

事件驱动

事件驱动编程