third_party/benchmark/src/thread_manager.h
Go to the documentation of this file.
1 #ifndef BENCHMARK_THREAD_MANAGER_H
2 #define BENCHMARK_THREAD_MANAGER_H
3 
4 #include <atomic>
5 
6 #include "benchmark/benchmark.h"
7 #include "mutex.h"
8 
9 namespace benchmark {
10 namespace internal {
11 
13  public:
14  explicit ThreadManager(int num_threads)
16 
18  return benchmark_mutex_;
19  }
20 
22  return start_stop_barrier_.wait();
23  }
24 
27  if (--alive_threads_ == 0) {
29  end_condition_.notify_all();
30  }
31  }
32 
35  end_condition_.wait(lock.native_handle(),
36  [this]() { return alive_threads_ == 0; });
37  }
38 
39  public:
40  struct Result {
42  double real_time_used = 0;
43  double cpu_time_used = 0;
44  double manual_time_used = 0;
48  bool has_error_ = false;
50  };
52 
53  private:
55  std::atomic<int> alive_threads_;
59 };
60 
61 } // namespace internal
62 } // namespace benchmark
63 
64 #endif // BENCHMARK_THREAD_MANAGER_H
benchmark::Barrier::wait
bool wait() EXCLUDES(lock_)
Definition: benchmark/src/mutex.h:104
benchmark::internal::ThreadManager::Result::report_label_
std::string report_label_
Definition: third_party/benchmark/src/thread_manager.h:46
benchmark::internal::ThreadManager::NotifyThreadComplete
void NotifyThreadComplete() EXCLUDES(end_cond_mutex_)
Definition: third_party/benchmark/src/thread_manager.h:25
const
#define const
Definition: bloaty/third_party/zlib/zconf.h:230
benchmark
Definition: bm_alarm.cc:55
benchmark::internal::ThreadManager::Result::counters
UserCounters counters
Definition: third_party/benchmark/src/thread_manager.h:49
testing::internal::string
::std::string string
Definition: bloaty/third_party/protobuf/third_party/googletest/googletest/include/gtest/internal/gtest-port.h:881
benchmark::internal::ThreadManager::start_stop_barrier_
Barrier start_stop_barrier_
Definition: third_party/benchmark/src/thread_manager.h:56
benchmark::internal::ThreadManager::GetBenchmarkMutex
Mutex & GetBenchmarkMutex() const RETURN_CAPABILITY(benchmark_mutex_)
Definition: third_party/benchmark/src/thread_manager.h:17
benchmark::internal::ThreadManager::Result::error_message_
std::string error_message_
Definition: third_party/benchmark/src/thread_manager.h:47
mutex.h
benchmark::Barrier::removeThread
void removeThread() EXCLUDES(lock_)
Definition: benchmark/src/mutex.h:114
benchmark::internal::ThreadManager::Result
Definition: third_party/benchmark/src/thread_manager.h:40
benchmark::internal::ThreadManager::Result::has_error_
bool has_error_
Definition: third_party/benchmark/src/thread_manager.h:48
benchmark::Barrier
Definition: benchmark/src/mutex.h:99
benchmark::internal::ThreadManager::Result::iterations
IterationCount iterations
Definition: third_party/benchmark/src/thread_manager.h:41
benchmark::Condition
std::condition_variable Condition
Definition: benchmark/src/mutex.h:69
int64_t
signed __int64 int64_t
Definition: stdint-msvc2008.h:89
benchmark::IterationCount
uint64_t IterationCount
Definition: benchmark/include/benchmark/benchmark.h:451
benchmark::internal::ThreadManager::alive_threads_
std::atomic< int > alive_threads_
Definition: third_party/benchmark/src/thread_manager.h:55
benchmarks.python.py_benchmark.results
list results
Definition: bloaty/third_party/protobuf/benchmarks/python/py_benchmark.py:145
benchmark::internal::ThreadManager::benchmark_mutex_
Mutex benchmark_mutex_
Definition: third_party/benchmark/src/thread_manager.h:54
benchmark::internal::ThreadManager::end_condition_
Condition end_condition_
Definition: third_party/benchmark/src/thread_manager.h:58
EXCLUDES
#define EXCLUDES(...)
Definition: benchmark/src/mutex.h:55
RETURN_CAPABILITY
#define RETURN_CAPABILITY(x)
Definition: benchmark/src/mutex.h:62
benchmark::internal::ThreadManager::ThreadManager
ThreadManager(int num_threads)
Definition: third_party/benchmark/src/thread_manager.h:14
benchmark::internal::ThreadManager::WaitForAllThreads
void WaitForAllThreads() EXCLUDES(end_cond_mutex_)
Definition: third_party/benchmark/src/thread_manager.h:33
benchmark::internal::ThreadManager::Result::manual_time_used
double manual_time_used
Definition: third_party/benchmark/src/thread_manager.h:44
benchmark::internal::ThreadManager::StartStopBarrier
bool StartStopBarrier() EXCLUDES(end_cond_mutex_)
Definition: third_party/benchmark/src/thread_manager.h:21
benchmark::UserCounters
std::map< std::string, Counter > UserCounters
Definition: benchmark/include/benchmark/benchmark.h:439
benchmark::internal::ThreadManager::Result::real_time_used
double real_time_used
Definition: third_party/benchmark/src/thread_manager.h:42
benchmark::internal::ThreadManager::Result::complexity_n
int64_t complexity_n
Definition: third_party/benchmark/src/thread_manager.h:45
google::protobuf.internal::Mutex
WrappedMutex Mutex
Definition: bloaty/third_party/protobuf/src/google/protobuf/stubs/mutex.h:113
std
Definition: grpcpp/impl/codegen/async_unary_call.h:407
num_threads
static volatile int num_threads
Definition: benchmark-thread.c:30
benchmark::MutexLock::native_handle
MutexLockImp & native_handle()
Definition: benchmark/src/mutex.h:93
benchmark::internal::ThreadManager
Definition: third_party/benchmark/src/thread_manager.h:12
benchmark::MutexLock
Definition: benchmark/src/mutex.h:87
internal
Definition: benchmark/test/output_test_helper.cc:20
benchmark::internal::ThreadManager::Result::cpu_time_used
double cpu_time_used
Definition: third_party/benchmark/src/thread_manager.h:43
benchmark::internal::ThreadManager::GUARDED_BY
GUARDED_BY(GetBenchmarkMutex()) Result results
benchmark::internal::ThreadManager::end_cond_mutex_
Mutex end_cond_mutex_
Definition: third_party/benchmark/src/thread_manager.h:57


grpc
Author(s):
autogenerated on Fri May 16 2025 03:00:36