diff --git a/rclcpp/include/rclcpp/executors/multi_threaded_executor.hpp b/rclcpp/include/rclcpp/executors/multi_threaded_executor.hpp index 40abbc0041..aa350cc822 100644 --- a/rclcpp/include/rclcpp/executors/multi_threaded_executor.hpp +++ b/rclcpp/include/rclcpp/executors/multi_threaded_executor.hpp @@ -36,7 +36,8 @@ class MultiThreadedExecutor : public executor::Executor RCLCPP_PUBLIC MultiThreadedExecutor( - const executor::ExecutorArgs & args = rclcpp::executor::create_default_executor_arguments()); + const executor::ExecutorArgs & args = rclcpp::executor::create_default_executor_arguments(), + size_t number_of_threads = 0); RCLCPP_PUBLIC virtual ~MultiThreadedExecutor(); diff --git a/rclcpp/src/rclcpp/executors/multi_threaded_executor.cpp b/rclcpp/src/rclcpp/executors/multi_threaded_executor.cpp index b31fbe7e0c..d129f6104d 100644 --- a/rclcpp/src/rclcpp/executors/multi_threaded_executor.cpp +++ b/rclcpp/src/rclcpp/executors/multi_threaded_executor.cpp @@ -23,10 +23,12 @@ using rclcpp::executors::MultiThreadedExecutor; -MultiThreadedExecutor::MultiThreadedExecutor(const rclcpp::executor::ExecutorArgs & args) +MultiThreadedExecutor::MultiThreadedExecutor( + const rclcpp::executor::ExecutorArgs & args, + size_t number_of_threads) : executor::Executor(args) { - number_of_threads_ = std::thread::hardware_concurrency(); + number_of_threads_ = number_of_threads ? number_of_threads : std::thread::hardware_concurrency(); if (number_of_threads_ == 0) { number_of_threads_ = 1; }