static unique_ptr<MappedFile> load(sfz::StringSlice resource_path) { return load_first( resource_path, { format("{0}/{1}", dirs().scenarios, sys.prefs->scenario_identifier()), format("{0}/{1}", dirs().scenarios, kFactoryScenarioIdentifier), application_path(), }); }
bool pop( T& value_ ) { MPSCNode<T>* first = const_cast<MPSCNode<T>*>( load_first( std::memory_order_relaxed ) ); MPSCNode<T>* next = const_cast<MPSCNode<T>*>( first->load_next( std::memory_order_acquire ) ); if( next ) { store_first( next, std::memory_order_relaxed ); assign_or_move( value_, next->get_mutable_value() ); delete first; return true; } return false; }
~MPSCQueue() { MPSCNode<T>* first = const_cast<MPSCNode<T>*>( load_first( std::memory_order_relaxed ) ); MPSCNode<T>* next; for( MPSCNode<T>* node = first; node; node = next ) { next = const_cast<MPSCNode<T>*>( node->load_next( std::memory_order_relaxed ) ); delete node; if( next == first ) { break; } } }