#include <iostream>
#include <thread>
#include <algorithm>
#include <vector>
class markov_chain
{
public:
unsigned int length{0}, acceptance{0};
markov_chain(unsigned int l) { length = l; }
~markov_chain() {}
void sample(int acc);
};
void markov_chain::sample(int acc)
{
acceptance = acc;
std::cout << length << ' ' << acceptance << std::endl;
}
int main()
{
int number_of_threads{3};
int number_of_samples{1000};
std::vector<markov_chain> chains;
std::vector<std::thread> workers;
chains.reserve(number_of_threads);
for (int i = 0; i < number_of_threads; ++i) {
chains.push_back(markov_chain(number_of_samples));
workers.push_back(std::thread(&markov_chain::sample, &chains[i], 99));
}
for(auto &t : workers) {
t.join();
}
for (auto &c : chains) {
std::cout << c.length << ' ' << c.acceptance << std::endl;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dGhyZWFkPgojaW5jbHVkZSA8YWxnb3JpdGhtPgojaW5jbHVkZSA8dmVjdG9yPgoKY2xhc3MgbWFya292X2NoYWluIAp7CnB1YmxpYzoKICAgIHVuc2lnbmVkIGludCBsZW5ndGh7MH0sIGFjY2VwdGFuY2V7MH07CgogICAgbWFya292X2NoYWluKHVuc2lnbmVkIGludCBsKSB7IGxlbmd0aCA9IGw7IH0KICAgIH5tYXJrb3ZfY2hhaW4oKSB7fQoKICAgIHZvaWQgc2FtcGxlKGludCBhY2MpOwp9OwoKdm9pZCBtYXJrb3ZfY2hhaW46OnNhbXBsZShpbnQgYWNjKQp7CiAgICBhY2NlcHRhbmNlID0gYWNjOwoJc3RkOjpjb3V0IDw8IGxlbmd0aCA8PCAnICcgPDwgYWNjZXB0YW5jZSA8PCBzdGQ6OmVuZGw7Cn0KCmludCBtYWluKCkgIAp7CiAgICBpbnQgbnVtYmVyX29mX3RocmVhZHN7M307CiAgICBpbnQgbnVtYmVyX29mX3NhbXBsZXN7MTAwMH07CgogICAgc3RkOjp2ZWN0b3I8bWFya292X2NoYWluPiBjaGFpbnM7CiAgICBzdGQ6OnZlY3RvcjxzdGQ6OnRocmVhZD4gd29ya2VyczsKCiAgICBjaGFpbnMucmVzZXJ2ZShudW1iZXJfb2ZfdGhyZWFkcyk7CgogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1iZXJfb2ZfdGhyZWFkczsgKytpKSB7CiAgICAgICAgY2hhaW5zLnB1c2hfYmFjayhtYXJrb3ZfY2hhaW4obnVtYmVyX29mX3NhbXBsZXMpKTsKICAgICAgICB3b3JrZXJzLnB1c2hfYmFjayhzdGQ6OnRocmVhZCgmbWFya292X2NoYWluOjpzYW1wbGUsICZjaGFpbnNbaV0sIDk5KSk7CiAgICB9CgogICAgZm9yKGF1dG8gJnQgOiB3b3JrZXJzKSB7CiAgICAgICAgdC5qb2luKCk7CiAgICB9CgogICAgZm9yIChhdXRvICZjIDogY2hhaW5zKSB7CiAgICAgICAgc3RkOjpjb3V0IDw8IGMubGVuZ3RoIDw8ICcgJyA8PCBjLmFjY2VwdGFuY2UgPDwgc3RkOjplbmRsOwogICAgfQoKICAgIHJldHVybiAwOwp9