OpenVDB 12.0.0
 
Loading...
Searching...
No Matches
ValueAccessorLock< MutexT > Struct Template Reference

A small class that contains a Mutex which is derived from by the internal Value Accessor Implementation. This allows for the empty base class optimization to be performed in the case where a Mutex/Lock is not in use. From C++20 we can instead switch to [[no_unique_address]]. More...

#include <openvdb/tree/ValueAccessor.h>

Inheritance diagram for ValueAccessorLock< MutexT >:
ValueAccessorImpl< TreeType, IsSafe, MutexType, openvdb::make_index_sequence< CacheLevels > > ValueAccessorImpl< TreeType, IsSafe, tbb::spin_mutex, openvdb::make_index_sequence< CacheLevels > > ValueAccessorImpl< _TreeType, IsSafe, MutexT, IntegerSequence >

Public Member Functions

auto lock () const
 

Detailed Description

template<typename MutexT>
struct openvdb::v12_0::tree::ValueAccessorLock< MutexT >

A small class that contains a Mutex which is derived from by the internal Value Accessor Implementation. This allows for the empty base class optimization to be performed in the case where a Mutex/Lock is not in use. From C++20 we can instead switch to [[no_unique_address]].

The following classes exist to perform empty base class optimizations with the final ValueAccessor implementation. Depending on the template types provided to the derived implementation, some member variables may not be necessary (mutex, leaf buffer cache, etc). These classes allow for these variables to be compiled out. Note that from C++20 we can switch to [[no_unique_address]] member annotations instead.

Member Function Documentation

◆ lock()

template<typename MutexT>
auto lock ( ) const
inline