#include #include #include #include using namespace brick; std::atomic< int > isnew( 0 ); hashset::CompactConcurrent< int > set1, set2( set1 ); void *thread( void * ) { if ( set2.insert( 1 ).isnew() ) ++ isnew; return nullptr; } int main() { set1.insert( 2 ); set1.insert( 3 ); set1.insert( 4 ); set1.insert( 5 ); set1.insert( 6 ); set1.insert( 7 ); set1.insert( 8 ); int init = set1.capacity(); // ASSERT_EQ( set1.capacity(), init ); pthread_t tid; pthread_create( &tid, nullptr, thread, nullptr ); set1.insert( 9 ); if ( set1.insert( 1 ).isnew() ) ++ isnew; pthread_join( tid, nullptr ); ASSERT_NEQ( init, set1.capacity() ); ASSERT_EQ( isnew.load(), 1 ); }