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