25 using namespace Experimental;
27 double wasteCPUTime(std::mt19937& gen) {
29 return std::generate_canonical<double, 100>(gen)
30 + std::generate_canonical<double, 100>(gen)
31 + std::generate_canonical<double, 100>(gen)
32 + std::generate_canonical<double, 100>(gen)
33 + std::generate_canonical<double, 100>(gen);
36 using Filler_t = Experimental::THistConcurrentFiller<Experimental::TH2D, 1024>;
41 void theTask(Filler_t filler) {
44 for (
int i = 0; i < 3000000; ++i)
45 filler.Fill({wasteCPUTime(gen), wasteCPUTime(gen)});
56 Experimental::THistConcurrentFillManager<Experimental::TH2D> fillMgr(hist);
58 std::array<std::thread, 8> threads;
61 for (
auto& thr: threads) {
63 thr = std::thread(theTask, fillMgr.MakeFiller());
68 for (
auto& thr: threads)
72 void concurrentfill() {
76 concurrentHistFill(hist);
78 std::cout << hist.GetEntries() <<
'\n';
THist< 2, double, THistStatContent, THistStatUncertainty > TH2D