ASAGI
1.0
a pArallel Server for Adaptive GeoInformation
Main Page
Related Pages
Modules
Namespaces
Classes
Files
Examples
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Groups
Pages
cache
lru.h
Go to the documentation of this file.
1
38
#ifndef CACHE_LRU_H
39
#define CACHE_LRU_H
40
41
namespace
cache
42
{
43
48
class
LRU
49
{
50
private
:
52
unsigned
long
m_size
;
53
55
unsigned
long
m_nextPage
;
56
58
unsigned
long
m_nextClear
;
59
61
bool
*
m_referenced
;
62
public
:
63
LRU
()
64
:
m_size
(0),
m_nextPage
(0L),
m_nextClear
(0),
65
m_referenced
(0L)
66
{
67
}
68
69
virtual
~
LRU
()
70
{
71
delete
[]
m_referenced
;
72
}
73
77
void
init
(
unsigned
long
size,
long
handDiff = -1)
78
{
79
m_size
= size;
80
m_nextPage
= size - 1;
// Some magic so getFree() works
81
if
(handDiff < 0)
82
// Some default value
83
m_nextClear
= size / 2;
84
else
85
m_nextClear
= handDiff;
86
87
m_referenced
=
new
bool
[size];
88
// Rest of the array will bet set to "false" by getFree()
89
for
(
unsigned
long
i = 0; i <
m_nextClear
; i++)
90
m_referenced
[i] =
false
;
91
}
92
96
void
access
(
unsigned
long
index)
97
{
98
m_referenced
[index] =
true
;
99
}
100
104
unsigned
long
getFree
()
105
{
106
do
{
// Last page was accessed -> execute this loop at least once
107
// Clear r bit
108
m_referenced
[
m_nextClear
] =
false
;
109
110
// Increment both pointer
111
m_nextPage
= (
m_nextPage
+ 1) %
m_size
;
112
m_nextClear
= (
m_nextClear
+ 1) %
m_size
;
113
}
while
(
m_referenced
[
m_nextPage
]);
114
115
// We also access this page
116
m_referenced
[
m_nextPage
] =
true
;
117
118
return
m_nextPage
;
119
}
120
};
121
122
}
123
124
#endif // CACHE_LRU_H
cache::LRU::getFree
unsigned long getFree()
Definition:
lru.h:104
cache::LRU::init
void init(unsigned long size, long handDiff=-1)
Definition:
lru.h:77
cache::LRU::access
void access(unsigned long index)
Definition:
lru.h:96
cache::LRU::m_nextClear
unsigned long m_nextClear
Definition:
lru.h:58
cache::LRU
Definition:
lru.h:48
cache::LRU::m_size
unsigned long m_size
Definition:
lru.h:52
cache::LRU::m_referenced
bool * m_referenced
Definition:
lru.h:61
cache::LRU::m_nextPage
unsigned long m_nextPage
Definition:
lru.h:55
Generated by
1.8.7