Thrill  0.1

Group of classes which help controlling external memory space, managing disks, and allocating and deallocating blocks of external storage. More...


 Allocation Functors
 Block Scheduling Sublayer


 Block Manager Internals.


class  BID< Size >
class  BID< 0 >
 Specialization of block identifier class (BID) for variable size block size. More...
class  block_manager
 Block manager class. More...
class  config
class  disk_block_allocator
 This class manages allocation of blocks onto a single disk. More...
class  disk_config
class  typed_block< RawSize, Type, NRef, MetaInfoType >


template<size_t BlockSize>
using BIDArray = tlx::simple_vector< BID< BlockSize > >


template<size_t BlockSize>
void delete_block (const BID< BlockSize > &bid)
template<typename BIDIterator >
void delete_blocks (const BIDIterator &bid_begin, const BIDIterator &bid_end)
template<typename DiskAssignFunctor , typename BIDIterator >
void new_blocks (const DiskAssignFunctor &functor, BIDIterator bid_begin, BIDIterator bid_end, size_t alloc_offset=0)
 Allocates new blocks. More...
template<size_t BlockSize>
std::ostream & operator<< (std::ostream &s, const BID< BlockSize > &bid)

Detailed Description

Group of classes which help controlling external memory space, managing disks, and allocating and deallocating blocks of external storage.

Typedef Documentation

◆ BIDArray

using BIDArray = tlx::simple_vector<BID<BlockSize> >

Definition at line 198 of file bid.hpp.

Function Documentation

◆ delete_block()

◆ delete_blocks()

void delete_blocks ( const BIDIterator &  bid_begin,
const BIDIterator &  bid_end 

Deallocates blocks.

Deallocates blocks in the range [ bid_begin, bid_end)

bid_beginiterator object of bid_iterator concept
bid_enditerator object of bid_iterator concept

Definition at line 271 of file block_manager.hpp.

References block_manager::delete_block().

Referenced by block_manager::new_block().

◆ new_blocks()

void new_blocks ( const DiskAssignFunctor &  functor,
BIDIterator  bid_begin,
BIDIterator  bid_end,
size_t  alloc_offset = 0 

Allocates new blocks.

Allocates new blocks according to the strategy given by functor and stores block identifiers to the range [ bid_begin, bid_end) Allocation will be lined up with previous partial allocations of alloc_offset blocks. For BID<0> allocations, the objects' size field must be initialized.

functorobject of model of allocation_strategy concept
bid_beginbidirectional BID iterator object
bid_endbidirectional BID iterator object
alloc_offsetadvance for functor to line up partial allocations

Definition at line 165 of file block_manager.hpp.

References block_manager::block_allocators_, block_manager::current_allocation_, block_manager::disk_files_, SimpleVector< ValueType, Mode >::fill(), max(), block_manager::maximum_allocation_, block_manager::mutex_, block_manager::ndisks_, SimpleVector< ValueType, Mode >::resize(), SimpleVector< ValueType, Mode >::size(), TLX_LOGC, block_manager::total_allocation_, and block_manager::verbose_block_life_cycle.

Referenced by block_manager::new_block().

◆ operator<<()

std::ostream& foxxll::operator<< ( std::ostream &  s,
const BID< BlockSize > &  bid 

Prints a BID to an ostream using the following format

*  [0x12345678|0]0x00100000/0x00010000
*  [file ptr|file id]offset/size
Can be used to replace the obsolete FMT_BID macro

Definition at line 176 of file bid.hpp.