Shows how to use xtd::threading::monitor class.
#include <xtd/threading/interlocked>
#include <xtd/threading/monitor>
#include <xtd/threading/thread>
#include <xtd/console>
#include <xtd/literals>
#include <xtd/random>
#include <xtd/startup>
#include <array>
#include <vector>
namespace monitor_example {
class program {
public:
static void main() {
auto threads = std::vector<thread> {};
auto total = 0_s64;
for (auto thread_ctr = 0; thread_ctr < 10; ++thread_ctr)
auto values = std::array<int, 10000> {};
auto thread_total = 0;
auto thread_n = 0;
auto ctr = 0;
for (ctr = 0; ctr < 10000; ++ctr)
values[ctr] = rnd.next(0, 1001);
thread_n = ctr;
for (auto value : values)
thread_total += value;
(thread_total * 1.0) / thread_n, thread_n);
}));
try {
}
}
}
};
}
startup_(monitor_example::program::main);