|
ATLAS Offline Software
|
Go to the documentation of this file.
15 #ifndef ATHENASERVICES_RCUSVC_H
16 #define ATHENASERVICES_RCUSVC_H
21 #include "GaudiKernel/ServiceHandle.h"
22 #include "GaudiKernel/IHiveWhiteBoard.h"
23 #include "GaudiKernel/IIncidentSvc.h"
24 #include "GaudiKernel/IIncidentListener.h"
25 #include <unordered_map>
40 :
public extends<AthService, IRCUSvc, IIncidentListener>
84 virtual void handle (
const Incident& inc)
override;
89 typedef std::unordered_set<IRCUObject*>
set_t;
102 typedef std::lock_guard<std::recursive_mutex>
lock_t;
109 #endif // not ATHENASERVICES_RCUSVC_H
std::lock_guard< std::recursive_mutex > lock_t
virtual void add(IRCUObject *obj) override
Add a new RCU object to the set being managed.
RCUSvc(const std::string &name, ISvcLocator *svc)
Standard Gaudi constructor.
std::recursive_mutex m_mutex
Mutex protecting access to m_objs.
virtual void handle(const Incident &inc) override
Gaudi incident handler.
virtual size_t getNumSlots() const override
Return the current number of event slots.
read-copy-update (RCU) style synchronization for Athena.
Service to allow cleaning up RCU objects at the EndEvent.
Some weak symbol referencing magic...
::StatusCode StatusCode
StatusCode definition for legacy code.
ServiceHandle< IIncidentSvc > m_incidentSvc
Gaudi incident service.
std::unordered_set< IRCUObject * > set_t
Set of managed objects.
AthROOTErrorHandlerSvc * svc
Base object class for RCU-style synchronization for Athena.
virtual StatusCode initialize() override
Standard Gaudi initialize method.
ServiceHandle< IInterface > m_hiveWhiteBoardSvc
The hive WB service. Used to get the current number of slots.
virtual StatusCode remove(IRCUObject *obj) override
Remove an RCU object to the set being managed.