Shows how to use xtd::threading::mutex class.
#include <xtd/threading/mutex>
#include <xtd/threading/thread>
#include <xtd/console>
#include <xtd/startup>
namespace mutex_example {
class program {
public:
static void main() {
for (
auto i = 0;
i < num_threads; ++
i) {
threads.emplace_back(thread_proc);
threads.back().start();
}
}
static void thread_proc() {
for(
auto i = 0;
i < num_iterations; ++
i)
Use_resource();
}
private:
static void Use_resource() {
mut.wait_one();
mut.release_mutex();
}
inline static std::vector<thread> threads;
inline static constexpr int num_iterations = 1;
inline static constexpr int num_threads = 3;
};
}