Skip to content

Commit

Permalink
Changed to use spin instead of spin_once to enable multithreading wit…
Browse files Browse the repository at this point in the history
…h MultiThreadedExecutor (#315)

Co-authored-by: Alejandro Hernández Cordero <[email protected]>
(cherry picked from commit 4503507)
  • Loading branch information
TakashiSato authored and mergify[bot] committed Jun 3, 2024
1 parent 87bf263 commit bac6701
Showing 1 changed file with 1 addition and 8 deletions.
9 changes: 1 addition & 8 deletions gz_ros2_control/src/gz_ros2_control_plugin.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -83,9 +83,6 @@ class GazeboSimROS2ControlPluginPrivate
/// \brief Thread where the executor will spin
std::thread thread_executor_spin_;

/// \brief Flag to stop the executor thread when this plugin is exiting
bool stop_{false};

/// \brief Executor to spin the controller
rclcpp::executors::MultiThreadedExecutor::SharedPtr executor_;

Expand Down Expand Up @@ -248,7 +245,6 @@ GazeboSimROS2ControlPlugin::GazeboSimROS2ControlPlugin()
GazeboSimROS2ControlPlugin::~GazeboSimROS2ControlPlugin()
{
// Stop controller manager thread
this->dataPtr->stop_ = true;
this->dataPtr->executor_->remove_node(this->dataPtr->controller_manager_);
this->dataPtr->executor_->cancel();
this->dataPtr->thread_executor_spin_.join();
Expand Down Expand Up @@ -367,12 +363,9 @@ void GazeboSimROS2ControlPlugin::Configure(
this->dataPtr->node_ = rclcpp::Node::make_shared(node_name, ns);
this->dataPtr->executor_ = std::make_shared<rclcpp::executors::MultiThreadedExecutor>();
this->dataPtr->executor_->add_node(this->dataPtr->node_);
this->dataPtr->stop_ = false;
auto spin = [this]()
{
while (rclcpp::ok() && !this->dataPtr->stop_) {
this->dataPtr->executor_->spin_once();
}
this->dataPtr->executor_->spin();
};
this->dataPtr->thread_executor_spin_ = std::thread(spin);

Expand Down

0 comments on commit bac6701

Please sign in to comment.