diff --git a/callback_isolated_executor/src/component_container_callback_isolated.cpp b/callback_isolated_executor/src/component_container_callback_isolated.cpp index b93732b..fa6fb2f 100644 --- a/callback_isolated_executor/src/component_container_callback_isolated.cpp +++ b/callback_isolated_executor/src/component_container_callback_isolated.cpp @@ -51,6 +51,7 @@ class ComponentManagerCallbackIsolated node_id_to_executor_wrappers_; rclcpp::Publisher::SharedPtr client_publisher_; + std::mutex client_publisher_mutex_; }; ComponentManagerCallbackIsolated::~ComponentManagerCallbackIsolated() { @@ -141,9 +142,8 @@ void ComponentManagerCallbackIsolated::add_node_to_executor(uint64_t node_id) { std::thread([&executor_wrapper, group_id, this]() { auto tid = syscall(SYS_gettid); - // dirty - for (int i = 0; i < 3; i++) { - std::this_thread::sleep_for(std::chrono::milliseconds(100)); + { + std::lock_guard lock(this->client_publisher_mutex_); cie_thread_configurator::publish_callback_group_info( this->client_publisher_, tid, group_id); }