14#include "RConfigure.h"
25 if (handles.empty()) {
26 Warning(
"RunGraphs",
"Got an empty list of handles");
31 unsigned int nNotRun = 0;
32 for (
const auto &
h : handles) {
36 if (nNotRun < handles.size()) {
37 Warning(
"RunGraphs",
"Got %lu handles from which %lu link to results which are already ready.", handles.size(),
38 handles.size() - nNotRun);
46 std::set<
RResultHandle,
decltype(sameGraph)> s(handles.begin(), handles.end(), sameGraph);
47 std::vector<RResultHandle> uniqueLoops(s.begin(), s.end());
50 auto run = [](
RResultHandle &
h) {
if (
h.fLoopManager)
h.fLoopManager->Run(); };
57 for (
auto &
h : uniqueLoops)
void Warning(const char *location, const char *msgfmt,...)
Use this function in warning situations.
This class provides a simple interface to execute the same task multiple times in parallel threads,...
void Foreach(F func, unsigned nTimes, unsigned nChunks=0)
Execute a function without arguments several times in parallel, dividing the execution in nChunks.
void RunGraphs(std::vector< RResultHandle > handles)
Trigger the event loop of multiple RDataFrames concurrently.
Bool_t IsImplicitMTEnabled()
Returns true if the implicit multi-threading in ROOT is enabled.