Skip to content

Conversation

@sykwer
Copy link
Member

@sykwer sykwer commented Dec 22, 2025

Description

TODO

  • ThreadConfigurator cannot yet deal with reentrant CallbackGroup parallelism.
  • reentrant parallelism is fixed to 4 for now (should be configurable parameter)
  • Doc

Related links

How was this PR tested?

Notes for reviewers

Signed-off-by: sykwer <sykwer@gmail.com>
Signed-off-by: sykwer <sykwer@gmail.com>
Signed-off-by: sykwer <sykwer@gmail.com>
@sykwer sykwer requested a review from atsushi421 December 22, 2025 10:10
Signed-off-by: sykwer <sykwer@gmail.com>
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR introduces support for reentrant callback groups in the CallbackIsolatedExecutor, enabling parallel execution of callbacks within the same callback group. The implementation creates a new MultiThreadedExecutorInternal class to handle reentrant callback groups with configurable parallelism (currently hardcoded to 4 threads), while maintaining single-threaded execution for mutually exclusive callback groups.

Changes:

  • Added MultiThreadedExecutorInternal class to enable multi-threaded execution for reentrant callback groups
  • Modified CallbackIsolatedExecutor to detect and handle reentrant callback groups differently from mutually exclusive ones
  • Created a sample ReentrantNode application to demonstrate the reentrant callback group functionality

Reviewed changes

Copilot reviewed 9 out of 9 changed files in this pull request and generated 5 comments.

Show a summary per file
File Description
callback_isolated_executor/include/callback_isolated_executor/multi_threaded_executor_internal.hpp Defines the MultiThreadedExecutorInternal class with thread synchronization primitives for reentrant callback group execution
callback_isolated_executor/src/multi_threaded_executor_internal.cpp Implements thread pool management, synchronization logic, and executor lifecycle for reentrant callback groups
callback_isolated_executor/include/callback_isolated_executor/callback_isolated_executor.hpp Adds reentrant parallelism configuration and methods to handle different callback group types
callback_isolated_executor/src/callback_isolated_executor.cpp Refactors spin logic to route reentrant and mutually exclusive callback groups to appropriate executors
callback_isolated_executor/CMakeLists.txt Updates build configuration to include new MultiThreadedExecutorInternal implementation
cie_sample_application/include/cie_sample_application/reentrant_node.hpp Defines ReentrantNode header with reentrant callback group and timer declarations
cie_sample_application/src/reentrant_node.cpp Implements ReentrantNode with two timers assigned to a reentrant callback group for testing
cie_sample_application/src/reentrant_node_main.cpp Creates executable entry point for the ReentrantNode sample application
cie_sample_application/CMakeLists.txt Adds build targets for the new reentrant_node component and executable

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

sykwer and others added 3 commits January 16, 2026 17:07
…t_node.hpp

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
…t_node.hpp

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Signed-off-by: sykwer <sykwer@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants