#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(number_of_threads, markov_chain(number_of_samples));
std::vector<std::thread> workers;
for (int i = 0; i < number_of_threads; ++i) {
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;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dGhyZWFkPgojaW5jbHVkZSA8YWxnb3JpdGhtPgojaW5jbHVkZSA8dmVjdG9yPgoKY2xhc3MgbWFya292X2NoYWluIAp7CnB1YmxpYzoKICAgIHVuc2lnbmVkIGludCBsZW5ndGh7MH0sIGFjY2VwdGFuY2V7MH07CgogICAgbWFya292X2NoYWluKHVuc2lnbmVkIGludCBsKSB7IGxlbmd0aCA9IGw7IH0KICAgIH5tYXJrb3ZfY2hhaW4oKSB7fQoKICAgIHZvaWQgc2FtcGxlKGludCBhY2MpOwp9OwoKdm9pZCBtYXJrb3ZfY2hhaW46OnNhbXBsZShpbnQgYWNjKQp7CiAgICBhY2NlcHRhbmNlID0gYWNjOwoJc3RkOjpjb3V0IDw8IGxlbmd0aCA8PCAnICcgPDwgYWNjZXB0YW5jZSA8PCBzdGQ6OmVuZGw7Cn0KCmludCBtYWluKCkgIAp7CiAgICBpbnQgbnVtYmVyX29mX3RocmVhZHN7M307CiAgICBpbnQgbnVtYmVyX29mX3NhbXBsZXN7MTAwMH07CgogICAgc3RkOjp2ZWN0b3I8bWFya292X2NoYWluPiBjaGFpbnMobnVtYmVyX29mX3RocmVhZHMsIG1hcmtvdl9jaGFpbihudW1iZXJfb2Zfc2FtcGxlcykpOwogICAgc3RkOjp2ZWN0b3I8c3RkOjp0aHJlYWQ+IHdvcmtlcnM7CgogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1iZXJfb2ZfdGhyZWFkczsgKytpKSB7CiAgICAgICAgd29ya2Vycy5wdXNoX2JhY2soc3RkOjp0aHJlYWQoJm1hcmtvdl9jaGFpbjo6c2FtcGxlLCAmY2hhaW5zW2ldLCA5OSkpOwogICAgfQoKICAgIGZvcihhdXRvICZ0IDogd29ya2VycykgewogICAgICAgIHQuam9pbigpOwogICAgfQoKICAgIGZvciAoYXV0byAmYyA6IGNoYWlucykgewogICAgICAgIHN0ZDo6Y291dCA8PCBjLmxlbmd0aCA8PCAnICcgPDwgYy5hY2NlcHRhbmNlIDw8IHN0ZDo6ZW5kbDsKICAgIH0KCiAgICByZXR1cm4gMDsKfQ==