Skip to content

[WIP] Enable re-entrant Algorithms

Charles Leggett requested to merge leggett/Gaudi:dev/reEntAlg_2 into master

Adds a new type of Algorithm, ReEntAlgorithm, which has a const execute method. It inherits from Algorithm.

This builds on MR !273 (merged) and is a replacement for !177 (closed) which has been closed.

To explicitly differentiate it from a regular Algorithm, a different signature is used, StatusCode execute_R(const EventContext&) const. The regular execute() method is disabled via a final qualifier, and returns a StatusCode::FAILURE;

ReEntAlgorithm::getContext() overrides the default behaviour by returning the thread local EventContext.

A test method bool isReEntrant() is also added to IAlgorithm.

When a re-entrant Algorithm is detected by the AlgResourcePool, only a single instance is created, but can be requested ad-infinitum.

Edited by Charles Leggett

Merge request reports