/* * exercise_3.hpp * * Created on: 12 окт. 2021 г. * Author: alexander */ #pragma once #include #include #include #include #include #include std::mutex m; void generate_things(std::vector &v) { std::random_device rd; std::mt19937 mersenne(rd()); std::uniform_int_distribution urd(0, 1000); std::lock_guard lg(m); std::generate(v.begin(), v.end(), [&]() { return urd(mersenne); }); } void pop_thing(std::vector &v) { std::lock_guard lg(m); std::cout << *std::max_element(v.begin(), v.end()) << std::endl; } void exercise_3() { std::vector v(100); size_t count = 100; while (count--) { std::thread owner([&]() { generate_things(v); }); std::thread thief([&]() { pop_thing(v); }); owner.join(); thief.join(); } }