From ff761785c120522a2fe4eda18d34226dd122904a Mon Sep 17 00:00:00 2001 From: mwlasiuk Date: Tue, 17 Feb 2026 19:56:27 +0100 Subject: [PATCH] Move from std::lock_guard to std::scoped_lock --- ..._data_and_drop_here-precision_forestry.cpp | 4 ++-- .../lidar_odometry_gui.cpp | 11 ++++----- .../lidar_odometry_utils_optimizers.cpp | 24 +++++++------------ apps/manual_color/manual_color.cpp | 2 +- apps/quick_start_demo/quick_start_demo.cpp | 6 ++--- 5 files changed, 19 insertions(+), 28 deletions(-) diff --git a/apps/lidar_odometry_step_1/drag_folder_with_mandeye_data_and_drop_here-precision_forestry.cpp b/apps/lidar_odometry_step_1/drag_folder_with_mandeye_data_and_drop_here-precision_forestry.cpp index 023e903a..40608478 100644 --- a/apps/lidar_odometry_step_1/drag_folder_with_mandeye_data_and_drop_here-precision_forestry.cpp +++ b/apps/lidar_odometry_step_1/drag_folder_with_mandeye_data_and_drop_here-precision_forestry.cpp @@ -363,8 +363,8 @@ void find_best_stretch( // } } } - std::lock_guard lock(params.mutex_buckets_indoor); - std::lock_guard lock2(params.mutex_buckets_outdoor); + + std::scoped_lock lock(params.mutex_buckets_indoor, params.mutex_buckets_outdoor); update_rgd(rgd_params, my_buckets, points_global2, trajectory_stretched[0].translation()); diff --git a/apps/lidar_odometry_step_1/lidar_odometry_gui.cpp b/apps/lidar_odometry_step_1/lidar_odometry_gui.cpp index 86e82371..7f588899 100644 --- a/apps/lidar_odometry_step_1/lidar_odometry_gui.cpp +++ b/apps/lidar_odometry_step_1/lidar_odometry_gui.cpp @@ -392,8 +392,7 @@ void find_best_stretch( // } } } - std::lock_guard lock(params.mutex_buckets_indoor); - std::lock_guard lock2(params.mutex_buckets_outdoor); + std::scoped_lock lock(params.mutex_buckets_indoor, params.mutex_buckets_outdoor); update_rgd(rgd_params, my_buckets, points_global2, trajectory_stretched[0].translation()); @@ -1819,7 +1818,7 @@ void display() if (show_reference_buckets_indoor) { - std::lock_guard lock(params.mutex_buckets_indoor); + std::scoped_lock lock(params.mutex_buckets_indoor); glColor3f(1, 0, 0); glBegin(GL_POINTS); for (const auto& b : params.buckets_indoor) @@ -1829,7 +1828,7 @@ void display() if (show_reference_buckets_outdoor) { - std::lock_guard lock2(params.mutex_buckets_outdoor); + std::scoped_lock lock2(params.mutex_buckets_outdoor); glColor3f(0, 0, 1); glBegin(GL_POINTS); for (const auto& b : params.buckets_outdoor) @@ -1839,14 +1838,14 @@ void display() if (show_covs_indoor) { - std::lock_guard lock(params.mutex_buckets_indoor); + std::scoped_lock lock(params.mutex_buckets_indoor); for (const auto& b : params.buckets_indoor) draw_ellipse(b.second.cov, b.second.mean, Eigen::Vector3f(1.0f, 0.0f, 0.0f), 3); } if (show_covs_outdoor) { - std::lock_guard lock2(params.mutex_buckets_outdoor); + std::scoped_lock lock2(params.mutex_buckets_outdoor); for (const auto& b : params.buckets_outdoor) draw_ellipse(b.second.cov, b.second.mean, Eigen::Vector3f(0.0f, 0.0f, 1.0f), 3); } diff --git a/apps/lidar_odometry_step_1/lidar_odometry_utils_optimizers.cpp b/apps/lidar_odometry_step_1/lidar_odometry_utils_optimizers.cpp index dbff41fd..892a259f 100644 --- a/apps/lidar_odometry_step_1/lidar_odometry_utils_optimizers.cpp +++ b/apps/lidar_odometry_step_1/lidar_odometry_utils_optimizers.cpp @@ -2258,8 +2258,7 @@ bool compute_step_2( // params.buckets_outdoor.clear(); if (params.ablation_study_use_hierarchical_rgd) { - std::lock_guard lock(params.mutex_buckets_indoor); - std::lock_guard lock2(params.mutex_buckets_outdoor); + std::scoped_lock lock(params.mutex_buckets_indoor, params.mutex_buckets_outdoor); update_rgd_hierarchy( params.in_out_params_indoor, @@ -2272,8 +2271,7 @@ bool compute_step_2( } else { - std::lock_guard lock(params.mutex_buckets_indoor); - std::lock_guard lock2(params.mutex_buckets_outdoor); + std::scoped_lock lock(params.mutex_buckets_indoor, params.mutex_buckets_outdoor); update_rgd(params.in_out_params_indoor, params.buckets_indoor, pp, params.m_g.translation(), &lookup_stats.indoor_lookups); } @@ -2350,8 +2348,7 @@ bool compute_step_2( if (params.use_robust_and_accurate_lidar_odometry) { - std::lock_guard lock(params.mutex_buckets_indoor); - std::lock_guard lock2(params.mutex_buckets_outdoor); + std::scoped_lock lock(params.mutex_buckets_indoor, params.mutex_buckets_outdoor); auto tr = worker_data[i].intermediate_trajectory; auto trmm = worker_data[i].intermediate_trajectory_motion_model; @@ -2488,8 +2485,7 @@ bool compute_step_2( for (int iter = 0; iter < params.nr_iter; iter++) { - std::lock_guard lock(params.mutex_buckets_indoor); - std::lock_guard lock2(params.mutex_buckets_outdoor); + std::scoped_lock lock(params.mutex_buckets_indoor, params.mutex_buckets_outdoor); iter_end = iter; delta = 100000.0; @@ -2667,8 +2663,7 @@ bool compute_step_2( if (params.ablation_study_use_hierarchical_rgd) { - std::lock_guard lock(params.mutex_buckets_indoor); - std::lock_guard lock2(params.mutex_buckets_outdoor); + std::scoped_lock lock(params.mutex_buckets_indoor, params.mutex_buckets_outdoor); update_rgd_hierarchy( params.in_out_params_indoor, @@ -2681,8 +2676,7 @@ bool compute_step_2( } else { - std::lock_guard lock(params.mutex_buckets_indoor); - std::lock_guard lock2(params.mutex_buckets_outdoor); + std::scoped_lock lock(params.mutex_buckets_indoor, params.mutex_buckets_outdoor); update_rgd( params.in_out_params_indoor, @@ -2705,8 +2699,7 @@ bool compute_step_2( } if (params.ablation_study_use_hierarchical_rgd) { - std::lock_guard lock(params.mutex_buckets_indoor); - std::lock_guard lock2(params.mutex_buckets_outdoor); + std::scoped_lock lock(params.mutex_buckets_indoor, params.mutex_buckets_outdoor); update_rgd_hierarchy( params.in_out_params_indoor, @@ -2719,8 +2712,7 @@ bool compute_step_2( } else { - std::lock_guard lock(params.mutex_buckets_indoor); - std::lock_guard lock2(params.mutex_buckets_outdoor); + std::scoped_lock lock(params.mutex_buckets_indoor, params.mutex_buckets_outdoor); update_rgd( params.in_out_params_indoor, diff --git a/apps/manual_color/manual_color.cpp b/apps/manual_color/manual_color.cpp index a0eef696..0c24a1c2 100644 --- a/apps/manual_color/manual_color.cpp +++ b/apps/manual_color/manual_color.cpp @@ -1391,7 +1391,7 @@ void mouse(int glut_button, int state, int x, int y) [&](const mandeye::PointRGB& p) { double D = GetDistanceToRay(p.point, SystemData::clickedRay); - std::lock_guard guard(mtx); + std::scoped_lock guard(mtx); if (D < distanceIndexPair.first) { // Assume that SystemData::point is an array-like type implementation, naked pointer arithmetic ahead: diff --git a/apps/quick_start_demo/quick_start_demo.cpp b/apps/quick_start_demo/quick_start_demo.cpp index 805f950c..d3e782b0 100644 --- a/apps/quick_start_demo/quick_start_demo.cpp +++ b/apps/quick_start_demo/quick_start_demo.cpp @@ -282,7 +282,7 @@ void display() }*/ { - std::lock_guard lock(renderPtrLock); + std::scoped_lock lock(renderPtrLock); glLineWidth(2); glColor3f(0.0, 1.0, 0.0); @@ -554,7 +554,7 @@ bool compute_step_2_demo(std::vector &worker_data, LidarOdometryPara std::cout << "optimizing worker_data [" << i + 1 << "] of " << worker_data.size() << " acc_distance: " << acc_distance << " elapsed time: " << elapsed_seconds1.count() << std::endl; { - std::lock_guard lock(renderPtrLock); + std::scoped_lock lock(renderPtrLock); for (int k = 0; k < worker_data[i].intermediate_points.size(); k++) { @@ -1104,7 +1104,7 @@ int main(int argc, char *argv[]) { compute_step_2_demo(worker_data, params, ts_failure); { - std::lock_guard lock(renderPtrLock); + std::scoped_lock lock(renderPtrLock); std::vector global_pointcloud; std::vector intensity;