31 bool expected =
false;
32 auto doPrefetch =
m_prefetching.compare_exchange_strong(expected,
true);
38 std::lock_guard<std::mutex> guard(*
m_mutex);
40 iRecord.activityRegistry()->preESModuleSignal_.emit(iRecord.key(),
context);
43 : record_{iRecord}, context_{iContext} {}
44 ~EndGuard() { record_.activityRegistry()->postESModuleSignal_.emit(record_.key(), context_); }
47 } guardAR(iRecord, context);
std::atomic< bool > m_prefetching
void doneWaiting(std::exception_ptr iPtr)
Signals that the resource is now available and tasks should be spawned.
void push(tbb::task_group &, const T &iAction)
asynchronously pushes functor iAction into queue
edm::SerialTaskQueue * m_queue
void prefetchAsyncImpl(edm::WaitingTaskHolder iTask, edm::eventsetup::EventSetupRecordImpl const &, edm::eventsetup::DataKey const &iKey, edm::EventSetupImpl const *, edm::ServiceToken const &, edm::ESParentContext const &) final
void add(tbb::task_group *, WaitingTask *)
Adds task to the waiting list.
ComponentDescription const * providerDescription() const
returns the description of the DataProxyProvider which owns this Proxy
tbb::task_group * group() const noexcept
edm::WaitingTaskList m_waitingList
virtual void prefetch(edm::eventsetup::DataKey const &iKey, EventSetupRecordDetails)=0