void run() override { if( _master ) setName( "MasterWorker" ); else setName( "SlaveWorker" ); _registered.waitEQ( true ); if( _master ) { _barrier = new co::Barrier( _node, _barrierID ); _mapped = true; } else _mapped.waitEQ( true ); for( size_t i = 0; i < _numIterations; ++i ) { const co::uint128_t& version = _versions.pop(); { static lunchbox::SpinLock lock; lunchbox::ScopedFastWrite mutex( lock ); _barrier->sync( version ); } TEST( _barrier->isGood()); _barrier->enter(); } if( _master ) { _done = true; _versions.clear(); _node->releaseObject( _barrier ); delete _barrier; } }