Program Listing for File ThreadIbarrierFactory.hpp

Return to documentation for file (include/uitsl/parallel/ThreadIbarrierFactory.hpp)

#pragma once
#ifndef UITSL_PARALLEL_THREADIBARRIERFACTORY_HPP_INCLUDE
#define UITSL_PARALLEL_THREADIBARRIERFACTORY_HPP_INCLUDE

#include <memory>
#include <stddef.h>

#include "ThreadIbarrier.hpp"
#include "_ThreadIbarrierManager.hpp"

namespace uitsl {

class ThreadIbarrierFactory {

  std::shared_ptr<internal::ThreadIbarrierManager> manager;

public:

  ThreadIbarrierFactory(const size_t expected)
  : manager(std::make_shared<internal::ThreadIbarrierManager>(expected))
  { ; }

  uitsl::ThreadIbarrier MakeBarrier() { return manager->MakeBarrier(); }

};

} // namespace uitsl

#endif // #ifndef UITSL_PARALLEL_THREADIBARRIERFACTORY_HPP_INCLUDE