From 48b19af04ac5363cb9e733a32f6480dc0ecb6c48 Mon Sep 17 00:00:00 2001 From: Dirk Thomas Date: Thu, 10 Aug 2017 14:51:17 -0700 Subject: [PATCH] lock around taking the buffer and deciding to get a copy of the message or popping it --- rclcpp/include/rclcpp/intra_process_manager.hpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/rclcpp/include/rclcpp/intra_process_manager.hpp b/rclcpp/include/rclcpp/intra_process_manager.hpp index 71922e9..2a349f6 100644 --- a/rclcpp/include/rclcpp/intra_process_manager.hpp +++ b/rclcpp/include/rclcpp/intra_process_manager.hpp @@ -23,6 +23,7 @@ #include #include #include +#include #include #include @@ -315,6 +316,7 @@ public: message = nullptr; size_t target_subs_size = 0; + std::lock_guard lock(take_mutex_); mapped_ring_buffer::MappedRingBufferBase::SharedPtr buffer = impl_->take_intra_process_message( intra_process_publisher_id, message_sequence_number, @@ -346,6 +348,7 @@ private: get_next_unique_id(); IntraProcessManagerImplBase::SharedPtr impl_; + std::mutex take_mutex_; }; } // namespace intra_process_manager