20int main(
int nargs,
char* argv[]) {
21 H5::H5File h5_file(
"mt_output.h5", H5F_ACC_TRUNC);
24 n_threads = std::stoi(argv[1]);
28 n_events = std::stoi(argv[2]);
32 ms_sleep = std::stoi(argv[3]);
35 std::cerr << std::format(
36 "usage: {} [n_threads] [n_events] [sleep (ms)]\n", argv[0]);
42 consumers.
add(
"thread", [ms_sleep](
const out_t& o){
45 std::this_thread::sleep_for(std::chrono::milliseconds(ms_sleep));
49 consumers.
add(
"event", [](
const out_t& o) {
55 config.batch_size = n_events > 10 ? n_events / 10 : 1;
57 std::cout << std::format(
58 "writing {} events each to {} threads, in batches of {}\n",
65 std::vector<std::thread> threads;
66 threads.reserve(n_threads);
67 for (
size_t thread_n = 0; thread_n < n_threads; thread_n++) {
69 [thread_n, n_events, &
writer](){
70 std::cout <<
"starting thread " << thread_n <<
"\n";
71 for (
size_t event_n = 0; event_n < n_events; event_n++) {
76 for (
auto& thread: threads) thread.join();
void add(const std::string &name, const std::function< T(I)> &, const T &default_value=T(), Compression=Compression::STANDARD)
This should be the only method you need in this class.
Writer< N, I > makeWriter(H5::Group &group, const std::string &name, const Consumers< I > &consumers, const std::array< hsize_t, N > &extent=internal::uniform< N >(5), hsize_t batch_size=defaults::batch_size)
makeWriter