Program Listing for File DistributedTimeoutBarrier.hpp¶
↰ Return to documentation for file (include/uitsl/distributed/DistributedTimeoutBarrier.hpp)
#pragma once
#ifndef UITSL_DISTRIBUTED_DISTRIBUTEDTIMEOUTBARRIER_HPP_INCLUDE
#define UITSL_DISTRIBUTED_DISTRIBUTEDTIMEOUTBARRIER_HPP_INCLUDE
#include <thread>
#include <mpi.h>
#include "../countdown/Timer.hpp"
#include "../mpi/mpi_utils.hpp"
#include "../parallel/ThreadIbarrier.hpp"
#include "IbarrierRequest.hpp"
namespace uitsl {
// TODO is Ibarrier request leaked?
template<typename Timer_T=uitsl::Timer<>>
class DistributedTimeoutBarrier {
uitsl::IbarrierRequest proc_barrier;
public:
DistributedTimeoutBarrier(
const Timer_T& timer=Timer_T{},
MPI_Comm comm=MPI_COMM_WORLD
) : proc_barrier(comm) {
while (!proc_barrier.IsComplete() && !timer.IsComplete());
}
};
} // namespace uitsl
#endif // #ifndef UITSL_DISTRIBUTED_DISTRIBUTEDTIMEOUTBARRIER_HPP_INCLUDE