1 #include <thread> 2 #include <iostream> 3 4 const size_t kAllocSize = 16; 5 const size_t kInitialNumAllocs = 1 << 10; 6 const size_t kPeriodicNumAllocs = 1 << 10; 7 const size_t kNumIterations = 1 << 7; 8 const size_t kNumThreads = 16; 9 10 void Thread() { 11 // int sp; 12 // std::cerr << "Thread starting, sp = " << &sp << std::endl; 13 char *InitialAllocations[kInitialNumAllocs]; 14 char *PeriodicaAllocations[kPeriodicNumAllocs]; 15 for (auto &p : InitialAllocations) p = new char[kAllocSize]; 16 for (size_t i = 0; i < kNumIterations; i++) { 17 for (size_t j = 0; j < kPeriodicNumAllocs; j++) { 18 for (auto &p : PeriodicaAllocations) { 19 p = new char[kAllocSize]; 20 *p = 0; 21 } 22 for (auto p : PeriodicaAllocations) delete [] p; 23 } 24 } 25 for (auto p : InitialAllocations) delete [] p; 26 } 27 28 int main() { 29 // Thread(); 30 // return 0; 31 std::thread *Threads[kNumThreads]; 32 for (auto &T : Threads) T = new std::thread(&Thread); 33 for (auto T : Threads) { 34 T->join(); 35 delete T; 36 } 37 } 38