in benchmarks/pool_allocator_benchmark.cpp [49:68]
void runThreaded(benchmark::State& state, Alloc alloc, Free dealloc) {
dispenso::resizeGlobalThreadPool(kThreads);
std::vector<char*> ptrsArray[kThreads];
for (auto& ptrs : ptrsArray) {
ptrs.resize(state.range(0));
}
for (auto UNUSED_VAR : state) {
dispenso::TaskSet tasks(dispenso::globalThreadPool());
for (size_t i = 0; i < kThreads; ++i) {
tasks.schedule([alloc, dealloc, &ptrs = ptrsArray[i]]() {
for (char*& p : ptrs) {
p = alloc();
}
for (char* p : ptrs) {
dealloc(p);
}
});
}
}
}