 Map::SetReferenceMapPoints())
这两段代码分别来自 ORB-SLAM3 的Atlas类和Map类,函数名相同,都是SetReferenceMapPoints。它们构成一个“Atlas 层加锁转发 → Map 层加锁保存”的调用链,用于把一组参考地图点设置到当前活动地图中。void Atlas::SetReferenceMapPoints(const std::vectorMapPoint* vpMPs) // Atlas 类的成员函数。 // 返回类型 void,只执行设置操作,不返回结果。 // 参数 vpMPs 是 const std::vectorMapPoint*: // - const:函数内部不修改这个 vector; // - :按引用传递,避免 Atlas 层复制整个 vector; // - 元素类型 MapPoint*:参考地图点指针。 // 函数名 SetReferenceMapPoints,表示设置“参考地图点”。 { unique_lockmutex lock(mMutexAtlas); // 对 Atlas 的互斥量 mMutexAtlas 加锁。 // unique_lock 是 RAII 风格:构造时加锁,析构时自动解锁。 // 作用:保护 Atlas 的共享成员,尤其是当前活动地图指针 mpCurrentMap, // 防止其他线程在此时切换当前地图或修改 mpCurrentMap。 mpCurre