五、多线程数据共享
本节主要记录std::mutex
类,std::lock_guard
类模板、std::lock
函数模板。
1、创建和等待多个线程
多个线程的执行顺序是乱的,和操作系统的内部对线程的调度机制有关。使用容器存入线程对象,以这种方式操作多个线程比较方便。
原文:Understanding lvalues and rvalues in C and C++
我们在 C/C++ 编程中并不会经常用到 左值 (lvalue)和 右值 (rvalue)两个术语。然而一旦遇见,又常常不清楚它们的含义。最可能出现两这个术语的地方是在编译错误或警告的信息中。例如,使用 gcc
编译以下代码时:
Apollo Cyber RT
处于底层的实时操作系统(RTOS) 和算法模块之间,能够在保证高吞吐的情况下,又能低延迟的实时响应上层任务,并保证整个系统确定性的运转。
Apollo Cyber RT 框架核心理念是基于组件,组件有预先设定的输入输出。实际上,每个组件就代表一个专用的算法模块。框架可以根据所有预定义的组件生成有向无环图 (DAG)。
在运行时刻,框架把融合好的传感器数据和预定义的组件打包在一起形成用户级轻量任务,之后,框架的调度器可以根据资源可用性和任务优先级来派发这些任务。