TODOs
This commit is contained in:
parent
942a627173
commit
c8c13517e0
4
implementations/caching/cache/Cache.h
vendored
4
implementations/caching/cache/Cache.h
vendored
@ -107,6 +107,10 @@ void Cache<Key, Value>::_popOldEntries() {
|
|||||||
// _cachedBlocks vector at the same time.
|
// _cachedBlocks vector at the same time.
|
||||||
// There is a regression test case for this: CacheTest_RaceCondition:PopBlocksWhileRequestedElementIsThrownOut.
|
// There is a regression test case for this: CacheTest_RaceCondition:PopBlocksWhileRequestedElementIsThrownOut.
|
||||||
while (true) {
|
while (true) {
|
||||||
|
//TODO Since there are 4 threads running this, there will always be one having one of the shared locks.
|
||||||
|
// That is, while purging is running, no thread has a chance of calling pop() or push() and purging has priority.
|
||||||
|
// Fix this, use something like priority locks for pop() and push()?
|
||||||
|
// http://stackoverflow.com/questions/11666610/how-to-give-priority-to-privileged-thread-in-mutex-locking
|
||||||
boost::upgrade_lock<boost::shared_mutex> lock(_mutex);
|
boost::upgrade_lock<boost::shared_mutex> lock(_mutex);
|
||||||
boost::optional<Value> oldEntry = _popOldEntry(&lock);
|
boost::optional<Value> oldEntry = _popOldEntry(&lock);
|
||||||
if (oldEntry == boost::none) {
|
if (oldEntry == boost::none) {
|
||||||
|
Loading…
Reference in New Issue
Block a user