Program Listing for File MultiFuture.hpp
↰ Return to documentation for file (engine/include/Cacao/MultiFuture.hpp
)
#pragma once
#include "DllHelper.hpp"
#include <future>
#include <vector>
namespace Cacao {
template<typename T>
class CACAO_API MultiFuture : public std::vector<std::future<T>> {
public:
//All of std::vector's constructors
using std::vector<std::future<T>>::vector;
MultiFuture(const MultiFuture&) = delete;
MultiFuture& operator=(const MultiFuture&) = delete;
MultiFuture(MultiFuture&&) = default;
MultiFuture& operator=(MultiFuture&&) = default;
void WaitAll() {
for(const std::future<T>& fut : *this) {
fut.wait();
}
}
int NumReadyFutures() {
int retval;
for(const std::future<T>& fut : *this) {
//Wait for no time to get status
if(fut.wait_for(std::chrono::duration<double>::zero()) == std::future_status::ready) ++retval;
}
return retval;
}
};
}