rank_barrier.hpp 356 Bytes
Newer Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#pragma once

#include <condition_variable>
#include <mutex>

namespace infinilm::engine {
class RankBarrier {
public:
    explicit RankBarrier(size_t nranks);

    void wait();

private:
    const size_t thread_count_;
    size_t arrived_;
    size_t generation_;
    std::mutex mutex_;
    std::condition_variable cv_;
};
} // namespace infinilm::engine