X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=test%2Fstress%2Fsequential%2Fsequential_freelist_put_get.cpp;h=04308c996882875432b1bee731bce8c01ee41a53;hb=7b4ab4b6dd8c2205b91091d25dfa710acd232571;hp=0767d75422266b00c7adb399e59530d8f267e3a4;hpb=6ec1165b0c929f8b4c7d4f7a0ff79a4126b4947e;p=libcds.git diff --git a/test/stress/sequential/sequential_freelist_put_get.cpp b/test/stress/sequential/sequential_freelist_put_get.cpp index 0767d754..04308c99 100644 --- a/test/stress/sequential/sequential_freelist_put_get.cpp +++ b/test/stress/sequential/sequential_freelist_put_get.cpp @@ -127,25 +127,16 @@ namespace { for ( auto& i : arr ) list.put( &i ); - pool.add( new Worker( pool, list ), s_nThreadCount ); - - propout() << std::make_pair( "work_thread", s_nThreadCount ) - << std::make_pair( "pass_count", s_nPassCount ); - - std::chrono::milliseconds duration = pool.run(); - - propout() << std::make_pair( "duration", duration ); + std::unique_ptr> worker( + new Worker(pool, list)); + worker->test(); // analyze result size_t nTotal = 0; for ( auto const& i : arr ) nTotal += i.counter; - size_t nSuccess = 0; - for ( size_t threadNo = 0; threadNo < pool.size(); ++threadNo ) - nSuccess += static_cast&>( pool.get( threadNo )).m_nSuccess; - - EXPECT_EQ( nSuccess, nTotal ); + EXPECT_EQ( worker->m_nSuccess, nTotal ); list.clear( []( typename FreeList::node* ) {} ); } @@ -154,12 +145,11 @@ namespace { size_t put_get::s_nThreadCount = 1; size_t put_get::s_nPassCount = 100000; -#define CDSSTRESS_FREELIST_F( name, freelist_type ) \ - TEST_F( put_get, name ) \ - { \ - freelist_type fl; \ - test( fl ); \ - } +#define CDSSTRESS_FREELIST_F(name, freelist_type) \ + TEST_F(put_get, name) { \ + std::unique_ptr fl(new freelist_type()); \ + test(*fl); \ + } CDSSTRESS_FREELIST_F( FreeList, cds::intrusive::FreeList ) @@ -176,8 +166,9 @@ namespace { atomics::atomic tp; if ( tp.is_lock_free()) { - cds::intrusive::TaggedFreeList fl; - test( fl ); + using FL = cds::intrusive::TaggedFreeList; + std::unique_ptr fl(new FL()); + test( *fl ); } else std::cout << "Double-width CAS is not supported\n";