CppBenchmark 1.0.5.0
C++ Benchmark Library
Loading...
Searching...
No Matches
benchmark_pc.h
Go to the documentation of this file.
1
9#ifndef CPPBENCHMARK_BENCHMARK_PC_H
10#define CPPBENCHMARK_BENCHMARK_PC_H
11
16
17#include <thread>
18
19namespace CppBenchmark {
20
22
25class BenchmarkPC : public BenchmarkBase, public virtual FixturePC
26{
27public:
30
32
36 template<typename... Types>
37 explicit BenchmarkPC(const std::string& name, Types... settings) : BenchmarkPC(name, TSettings(settings...)) {}
39
43 explicit BenchmarkPC(const std::string& name, const TSettings& settings) : BenchmarkBase(name, settings) {}
44 BenchmarkPC(const BenchmarkPC&) = delete;
46 virtual ~BenchmarkPC() = default;
47
50
51protected:
53
59 virtual void RunProducer(ContextPC& context) = 0;
61
67 virtual void RunConsumer(ContextPC& context) = 0;
68
69private:
70 std::vector<std::thread> _threads;
71
72 int CountLaunches() const override;
73 void Launch(int& current, int total, LauncherHandler& handler) override;
74};
75
80} // namespace CppBenchmark
81
82#endif // CPPBENCHMARK_BENCHMARK_PC_H
Benchmark base definition.
Benchmark base class.
const Settings & settings() const
Get benchmark settings.
const std::string & name() const
Get benchmark name.
Producers/Consumers benchmark base class.
BenchmarkPC(const std::string &name, const TSettings &settings)
Alternative class constructor.
BenchmarkPC & operator=(BenchmarkPC &&)=delete
virtual ~BenchmarkPC()=default
BenchmarkPC(const BenchmarkPC &)=delete
BenchmarkPC(const std::string &name, Types... settings)
Default class constructor.
virtual void RunConsumer(ContextPC &context)=0
Consumer run method.
BenchmarkPC(BenchmarkPC &&)=delete
virtual void RunProducer(ContextPC &context)=0
Producer run method.
SettingsPC TSettings
BenchmarkPC settings type.
BenchmarkPC & operator=(const BenchmarkPC &)=delete
Benchmark producer/consumer running context.
Definition context_pc.h:27
Producers/Consumers benchmark fixture.
Definition fixture_pc.h:21
Producers/Consumers benchmark settings.
Definition settings_pc.h:21
Benchmark producer/consumer running context definition.
Producers/Consumers benchmark fixture definition.
C++ Benchmark project definitions.
Definition barrier.h:15
Producers/Consumers benchmark settings definition.