STXXL
1.4.0
|
Implements dynamically resizable prefetching pool.
Definition at line 30 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 34 of file prefetch_pool.h.
typedef BlockType stxxl::prefetch_pool< BlockType >::block_type |
Definition at line 33 of file prefetch_pool.h.
|
protected |
Definition at line 60 of file prefetch_pool.h.
|
protected |
Definition at line 57 of file prefetch_pool.h.
|
protected |
Definition at line 59 of file prefetch_pool.h.
|
protected |
Definition at line 58 of file prefetch_pool.h.
|
inlineexplicit |
Constructs pool.
init_size | initial number of blocks in the pool |
Definition at line 72 of file prefetch_pool.h.
|
inlinevirtual |
Waits for completion of all ongoing read requests and frees memory.
Definition at line 87 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 119 of file prefetch_pool.h.
References STXXL_VERBOSE2.
|
inline |
Definition at line 141 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 190 of file prefetch_pool.h.
|
inline |
Definition at line 172 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 201 of file prefetch_pool.h.
References STXXL_VERBOSE1.
|
inline |
Definition at line 221 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 259 of file prefetch_pool.h.
|
inline |
Returns number of owned blocks.
Definition at line 109 of file prefetch_pool.h.
|
inline |
Definition at line 79 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 65 of file prefetch_pool.h.
Referenced by stxxl::prefetch_pool< BlockType >::swap().
|
protected |
Definition at line 63 of file prefetch_pool.h.
Referenced by stxxl::prefetch_pool< BlockType >::swap().
|
protected |
Definition at line 67 of file prefetch_pool.h.
Referenced by stxxl::prefetch_pool< BlockType >::swap().