Program Listing for File ThreadTeam.hpp¶
↰ Return to documentation for file (include/uitsl/parallel/ThreadTeam.hpp)
#pragma once
#ifndef UITSL_PARALLEL_THREADTEAM_HPP_INCLUDE
#define UITSL_PARALLEL_THREADTEAM_HPP_INCLUDE
#include <algorithm>
#include <stddef.h>
#include <thread>
#include <utility>
#include "../../../third-party/Empirical/source/base/vector.h"
namespace uitsl {
class ThreadTeam {
emp::vector<std::thread> workers;
public:
template <typename... Args>
void Add(Args&&... args) {
workers.emplace_back(std::forward<Args>(args)...);
}
void Join() {
std::for_each(
std::begin(workers),
std::end(workers),
[](auto & worker){ worker.join(); }
);
workers.clear();
}
size_t Size() const { return workers.size(); }
};
} // namespace uitsl
#endif // #ifndef UITSL_PARALLEL_THREADTEAM_HPP_INCLUDE