28 double wasteCPUTime(std::mt19937 &gen)
31 return std::generate_canonical<double, 100>(gen) + std::generate_canonical<double, 100>(gen) +
32 std::generate_canonical<double, 100>(gen) + std::generate_canonical<double, 100>(gen) +
33 std::generate_canonical<double, 100>(gen);
36 using Filler_t = Experimental::RHistConcurrentFiller<Experimental::RH2D, 1024>;
41 void theTask(Filler_t filler)
45 for (
int i = 0; i < 3000000; ++i)
46 filler.Fill({wasteCPUTime(gen), wasteCPUTime(gen)});
50 void concurrentHistFill(Experimental::RH2D &hist)
58 Experimental::RHistConcurrentFillManager<Experimental::RH2D> fillMgr(hist);
60 std::array<std::thread, 8> threads;
63 for (
auto &thr: threads) {
65 thr = std::thread(theTask, fillMgr.MakeFiller());
69 for (
auto &thr: threads)
76 Experimental::RH2D hist{{100, 0., 1.}, {{0., 1., 2., 3., 10.}}};
78 concurrentHistFill(hist);
80 std::cout << hist.GetEntries() <<
'\n';