- pool.add( new inserter( pool, testMap ), s_nInsertThreadCount );
- pool.add( new deleter( pool, testMap ), s_nDeleteThreadCount );
-
- propout() << std::make_pair( "insert_thread_count", s_nInsertThreadCount )
- << std::make_pair( "delete_thread_count", s_nDeleteThreadCount )
- << std::make_pair( "pass_count", s_nThreadPassCount )
- << std::make_pair( "map_size", s_nMapSize );
-
- std::chrono::milliseconds duration = pool.run();
-
- propout() << std::make_pair( "duration", duration );
-
- size_t nInsertSuccess = 0;
- size_t nInsertFailed = 0;
- size_t nDeleteSuccess = 0;
- size_t nDeleteFailed = 0;
-
- for ( size_t i = 0; i < pool.size(); ++i ) {
- cds_test::thread& thr = pool.get( i );
- switch ( thr.type()) {
- case insert_thread:
- {
- inserter& t = static_cast<inserter&>(thr);
- nInsertSuccess += t.m_nInsertSuccess;
- nInsertFailed += t.m_nInsertFailed;
- }
- break;
- case delete_thread:
- {
- deleter& t = static_cast<deleter&>(thr);
- nDeleteSuccess += t.m_nDeleteSuccess;
- nDeleteFailed += t.m_nDeleteFailed;
- }
- break;
- default:
- assert( false );
- }
+ std::unique_ptr<inserter> inserter_thrd(
+ new inserter(pool, testMap));
+ std::unique_ptr<deleter> deleter_thrd(
+ new deleter(pool, testMap));
+ for (size_t nPass = 0; nPass < s_nThreadPassCount; ++nPass) {
+ inserter_thrd->test();
+ deleter_thrd->test();