15#ifndef ATHENAKERNEL_RECYCLABLEDATAOBJECT_H
16#define ATHENAKERNEL_RECYCLABLEDATAOBJECT_H
22# pragma GCC diagnostic push
23# pragma GCC diagnostic ignored "-Wpedantic"
25#include "tbb/concurrent_queue.h"
27# pragma GCC diagnostic pop
91 typedef tbb::concurrent_queue<DOBJ*>
queue_t;
99 template <
typename... ARGS>
142 template <
typename... ARGS>
143 DOBJ*
get (ARGS&&... args);
virtual unsigned long release() override
DataObject release method.
std::shared_ptr< queue_t > m_queue
tbb::concurrent_queue< DOBJ * > queue_t
Underlying queue type holding these objects.
RecyclableDataObject(std::shared_ptr< queue_t > queue, ARGS &&... args)
Constructor.
std::shared_ptr< queue_t > m_queue
Shared reference to the actual queue.
DOBJ * get(ARGS &&... args)
Get an object, either a new one or one recycled from a previous event.
RecyclableDataObject< DOBJ >::queue_t queue_t
Underlying queue type holding these objects.
RecyclableDataQueue()
Constructor.
~RecyclableDataQueue()
Destructor.
Some weak symbol referencing magic... These are declared in AthenaKernel/getMessageSvc....