STXXL
1.4.1
|
Implements dynamically resizable prefetching pool.
Definition at line 29 of file prefetch_pool.h.
Classes | |
struct | bid_hash |
Public Types | |
typedef block_type::bid_type | bid_type |
typedef BlockType | block_type |
Public Member Functions | |
prefetch_pool (unsigned_type init_size=1) | |
Constructs pool. More... | |
virtual | ~prefetch_pool () |
Waits for completion of all ongoing read requests and frees memory. More... | |
bool | hint (bid_type bid) |
Gives a hint for prefetching a block. More... | |
bool | hint (bid_type bid, write_pool< block_type > &w_pool) |
bool | in_prefetching (bid_type bid) |
bool | invalidate (bid_type bid) |
request_ptr | read (block_type *&block, bid_type bid) |
Reads block. If this block is cached block is not read but passed from the cache. More... | |
request_ptr | read (block_type *&block, bid_type bid, write_pool< block_type > &w_pool) |
unsigned_type | resize (unsigned_type new_size) |
Resizes size of the pool. More... | |
unsigned_type | size () const |
Returns number of owned blocks. More... | |
void | swap (prefetch_pool &obj) |
Protected Types | |
typedef hash_map_type::iterator | busy_blocks_iterator |
typedef std::pair< block_type *, request_ptr > | busy_entry |
typedef std::list< block_type * > ::iterator | free_blocks_iterator |
typedef compat_hash_map < bid_type, busy_entry, bid_hash >::result | hash_map_type |
Protected Attributes | |
hash_map_type | busy_blocks |
std::list< block_type * > | free_blocks |
unsigned_type | free_blocks_size |
Additional Inherited Members | |
Private Member Functions inherited from stxxl::noncopyable | |
noncopyable () | |
typedef block_type::bid_type stxxl::prefetch_pool< BlockType >::bid_type |
Definition at line 33 of file prefetch_pool.h.
typedef BlockType stxxl::prefetch_pool< BlockType >::block_type |
Definition at line 32 of file prefetch_pool.h.
|
protected |
Definition at line 59 of file prefetch_pool.h.
|
protected |
Definition at line 56 of file prefetch_pool.h.
|
protected |
Definition at line 58 of file prefetch_pool.h.
|
protected |
Definition at line 57 of file prefetch_pool.h.
|
inlineexplicit |
Constructs pool.
init_size | initial number of blocks in the pool |
Definition at line 71 of file prefetch_pool.h.
|
inlinevirtual |
Waits for completion of all ongoing read requests and frees memory.
Definition at line 86 of file prefetch_pool.h.
|
inline |
Gives a hint for prefetching a block.
bid | address of a block to be prefetched |
true
if there was a free block to do prefetch and prefetching was scheduled, false
otherwise read
method) calling hint
function has no effect Definition at line 118 of file prefetch_pool.h.
References STXXL_VERBOSE2.
|
inline |
Definition at line 140 of file prefetch_pool.h.
References stxxl::write_pool< BlockType >::add(), stxxl::write_pool< BlockType >::has_request(), stxxl::write_pool< BlockType >::steal_request(), STXXL_VERBOSE1, and STXXL_VERBOSE2.
|
inline |
Definition at line 189 of file prefetch_pool.h.
|
inline |
Definition at line 171 of file prefetch_pool.h.
|
inline |
Reads block. If this block is cached block is not read but passed from the cache.
block | block object, where data to be read to. If block was cached block 's ownership goes to the pool and block from cache is returned in block value. |
bid | address of the block |
block
parameter must be allocated dynamically using new
. Definition at line 200 of file prefetch_pool.h.
References STXXL_VERBOSE1.
|
inline |
Definition at line 220 of file prefetch_pool.h.
References stxxl::write_pool< BlockType >::add(), stxxl::write_pool< BlockType >::has_request(), stxxl::write_pool< BlockType >::steal_request(), and STXXL_VERBOSE1.
|
inline |
Resizes size of the pool.
new_size | desired size of the pool. If some blocks are used for prefetching, these blocks can't be freed. Only free blocks (not in prefetching) can be freed by reducing the size of the pool calling this method. |
Definition at line 258 of file prefetch_pool.h.
|
inline |
Returns number of owned blocks.
Definition at line 108 of file prefetch_pool.h.
|
inline |
Definition at line 78 of file prefetch_pool.h.
References stxxl::prefetch_pool< BlockType >::busy_blocks, stxxl::prefetch_pool< BlockType >::free_blocks, and stxxl::prefetch_pool< BlockType >::free_blocks_size.
|
protected |
Definition at line 64 of file prefetch_pool.h.
Referenced by stxxl::prefetch_pool< BlockType >::swap().
|
protected |
Definition at line 62 of file prefetch_pool.h.
Referenced by stxxl::prefetch_pool< BlockType >::swap().
|
protected |
Definition at line 66 of file prefetch_pool.h.
Referenced by stxxl::prefetch_pool< BlockType >::swap().