proxygen
folly::test::Barrier Struct Reference

#include <Barrier.h>

Public Member Functions

 Barrier (size_t count)
 
void wait ()
 

Private Attributes

std::mutex lock_
 
std::condition_variable cv_
 
size_t num_ {0}
 
size_t count_
 
size_t gen_ {0}
 

Detailed Description

Definition at line 27 of file Barrier.h.

Constructor & Destructor Documentation

folly::test::Barrier::Barrier ( size_t  count)
inlineexplicit

Definition at line 28 of file Barrier.h.

28 : lock_(), cv_(), count_(count) {}
std::mutex lock_
Definition: Barrier.h:43
std::condition_variable cv_
Definition: Barrier.h:44
int * count

Member Function Documentation

void folly::test::Barrier::wait ( )
inline

Definition at line 30 of file Barrier.h.

References count_, cv_, gen_, lock_, and num_.

Referenced by BENCHMARK(), BENCHMARK_RELATIVE(), and run_once().

30  {
31  std::unique_lock<std::mutex> lockHeld(lock_);
32  auto gen = gen_;
33  if (++num_ == count_) {
34  num_ = 0;
35  gen_++;
36  cv_.notify_all();
37  } else {
38  cv_.wait(lockHeld, [&]() { return gen == gen_; });
39  }
40  }
std::mutex lock_
Definition: Barrier.h:43
std::condition_variable cv_
Definition: Barrier.h:44

Member Data Documentation

size_t folly::test::Barrier::count_
private

Definition at line 46 of file Barrier.h.

Referenced by wait().

std::condition_variable folly::test::Barrier::cv_
private

Definition at line 44 of file Barrier.h.

Referenced by wait().

size_t folly::test::Barrier::gen_ {0}
private

Definition at line 47 of file Barrier.h.

Referenced by wait().

std::mutex folly::test::Barrier::lock_
private

Definition at line 43 of file Barrier.h.

Referenced by wait().

size_t folly::test::Barrier::num_ {0}
private

Definition at line 45 of file Barrier.h.

Referenced by wait().


The documentation for this struct was generated from the following file: