ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

ORB-SLAM3 void System::ResetActiveMap()

ORB-SLAM3 void System::ResetActiveMap()

这段代码来自 ORB-SLAM3 的System类。函数ResetActiveMap()的作用是:请求重置当前活动地图。它本身只设置一个标志位mbResetActiveMap = true,真正的重置操作由跟踪线程在后续检查到该标志后执行。这种“标志 + 锁”的模式是多线程 SLAM 系统中常见的线程间通信方式,避免在调用线程中直接执行耗时的地图清理操作。

void System::ResetActiveMap() // System 类的成员函数。 // 返回类型 void,不返回结果,只设置重置标志。 // 函数名 ResetActiveMap,表示“重置当前活动地图”。 { unique_lock<mutex> lock(mMutexReset); // 创建 unique_lock 对象 lock,对 System 的互斥量 mMutexReset 加锁。 // unique_lock 是 RAII 风格:构造时加锁,析构时自动解锁。 // 作用:保护成员变量 mbResetActiveMap,防止多线程同时读写造成数据竞争。 mbResetActiveMap = true; // 将“重置当前活动地图”标志设置为 true。 // 跟踪线程会在主循环中检查该标志,一旦发现为 true, // 就执行实际的重置操作,并在完成后将标志恢复为 false。 } // 函数结束,lock 析构,自动释放 mMutexReset。
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进