void testExecPerSecond(int numberOfThreads, int numberOfKeys) { ThreadPool<Task> pool; pool.init(numberOfThreads, numberOfKeys, 10000); for (long long int i = 0; ; ++i) { Task t(i % numberOfKeys); pool.enqueue(t); if (i % 100000 == 0) { int execCounterCur = execCounter.load(); int millisCur = getMilliseconds(); if (execCounterPrev != 0) { int counterDif = execCounterCur - execCounterPrev; long long int millisDif = millisCur - millisPrev; long long int execPerSec = (counterDif / millisDif) * 1000; cout << "exec per sec: " << execPerSec << "" << endl; } execCounterPrev = execCounterCur; millisPrev = millisCur; } } }
void testCountTotal(int numberOfThreads, int numberOfKeys, int numberOfTasks) { execCounter.store(0); { ThreadPool<Task> pool; pool.init(numberOfThreads, numberOfKeys, 10000); for (long long int i = 0; i < numberOfTasks; ++i) { Task t(i % numberOfKeys); while (pool.enqueue(t) != 0); } } if (execCounter.load() != numberOfTasks) { throw std::logic_error("test4: invalid exec count!"); } }