in e2e-examples/gcs/benchmark/gcscpp_runner.cc [78:98]
bool GcscppRunner::Run() {
auto client = CreateClient(parameters_);
// Spawns benchmark threads and waits until they're done.
std::vector<std::thread> threads;
std::vector<bool> returns(parameters_.threads);
for (int i = 1; i <= parameters_.threads; i++) {
int thread_id = i;
threads.emplace_back([thread_id, client, &returns, this]() {
bool r = this->DoOperation(thread_id, client);
if (!r && !parameters_.wait_threads) {
std::cerr << "Thread id=" << thread_id << " stopped." << std::endl;
exit(1);
}
returns[thread_id - 1] = r;
});
}
std::for_each(threads.begin(), threads.end(),
[](std::thread& t) { t.join(); });
return std::all_of(returns.begin(), returns.end(), [](bool v) { return v; });
}