Shows how to use xtd::threading::thread_pool class.
#include <xtd/xtd>
auto main() -> int {
thread::main_thread().name("Thread Main");
constexpr auto max_number = 10;
println("({} {}) -> start", thread::current_thread().name(), thread::current_thread().managed_thread_id());
thread_pool::queue_user_work_item([&] {
for (auto count = 1; count <= max_number; ++count) {
println(" ({} {}) -> count {}", thread::current_thread().name(), thread::current_thread().managed_thread_id(), count);
thread::sleep(100_ms);
}
});
println("({} {}) -> sleep(200_ms)", thread::current_thread().name(), thread::current_thread().managed_thread_id());
thread::sleep(200_ms);
println("({} {}) -> join all threads of thread_pool", thread::current_thread().name(), thread::current_thread().managed_thread_id());
thread_pool::close();
println("({} {}) -> stop", thread::current_thread().name(), thread::current_thread().managed_thread_id());
}