m_GCQueuePos(gc_queue.end())
68: m_Requestor(requestor),
83 boolchanged = new_expiration_time >
info.GetExpirationTime();
85 info.m_ExpirationTime = new_expiration_time;
97 boolchanged = new_expiration_time >
info.GetExpirationTime();
99 info.m_ExpirationTime = new_expiration_time;
111 #if !USE_MAIN_MUTEX_FOR_DATA 181 #ifndef NCBI_USE_TSAN 186 #ifndef NCBI_USE_TSAN 239 if( !
info.m_LoadMutex ) {
294 if( mutex ==
info.m_LoadMutex ) {
318 if( req == &requestor ) {
360 #if USE_MAIN_MUTEX_IN_CACHE 362: m_CacheMutex(mutex),
367SetMaxGCQueueSize(kDefaultMaxSize);
371: m_CacheMutex(mutex),
376SetMaxGCQueueSize(max_size);
380: m_MaxGCQueueSize(0),
388: m_MaxGCQueueSize(0),
404 size_tunused_count = 0;
405 ITERATE( vector<const CInfo_Base*>, it, infos ) {
407 if(
info.m_UseCounter == 0 ) {
471 if( --
info.m_UseCounter == 0 ) {
488 ITERATE( vector<CInfo_Base*>, it, infos ) {
516: m_Manager(&manager)
544it->first->ReleaseInfos(it->second);
void Guard(resource_type &resource)
Manually force the guard to protect some other resource.
void Release()
Manually force the resource to be released.
void x_SetInfo(CInfoLock_Base &lock, CInfoRequestor &requestor, CInfo_Base &info)
void ReleaseInfos(const vector< CInfo_Base * > &infos)
void x_RemoveFromGCQueue(CInfo_Base &info)
void x_SetUsed(CInfo_Base &info)
CInfoCache_Base(CInfoManager::TMainMutex &mutex)
void x_SetUnused(CInfo_Base &info)
bool x_Check(const vector< const CInfo_Base * > &infos) const
void x_AddToGCQueue(CInfo_Base &info)
void SetMaxGCQueueSize(size_t max_size)
virtual void x_ForgetInfo(CInfo_Base &info)=0
virtual ~CInfoCache_Base(void)
CRef< CInfoRequestorLock > m_Lock
void x_LockInfoMutex(CInfoRequestorLock &lock)
bool x_DeadLock(const CInfoRequestor &requestor, const CInfo_Base &info) const
CFastMutex m_DeadlockMutex
void x_AcquireLoadLock(TMainMutex::TWriteLockGuard &guard, CInfoRequestorLock &lock, EDoNotWait do_not_wait)
void x_UnlockInfoMutex(CInfoRequestorLock &lock)
void ReleaseLoadLock(CInfoRequestorLock &lock)
TMainMutex & GetMainMutex(void)
TLoadMutexPool m_LoadMutexPool
virtual ~CInfoManager(void)
void x_ReleaseLoadLock(CInfoRequestorLock &lock)
bool x_WaitForOtherLoader(TMainMutex::TWriteLockGuard &guard, CInfoRequestorLock &lock)
void ReleaseAllLoadLocks(CInfoRequestor &requestor)
void x_ReleaseLoadMutex(CRef< CLoadMutex > &mutex)
void x_AssignLoadMutex(CRef< CLoadMutex > &mutex)
CInfoManager & GetManager(void) const
bool SetLoadedFor(TExpirationTime new_expiration_time)
CRef< CLoadMutex > m_Mutex
CInfoRequestor & GetRequestor(void) const
CInfo_Base::TExpirationTime TExpirationTime
CInfoRequestorLock(CInfoRequestor &requestor, CInfo_Base &info)
CInfo_Base & GetInfo(void) const
~CInfoRequestorLock(void)
CRef< CInfo_Base > m_Info
bool IsLoaded(void) const
bool IsLocked(void) const
bool x_SetLoadedFor(TMainMutex::TWriteLockGuard &guard, TExpirationTime new_expiration_time)
CInfoRequestor(CInfoManager &manager)
unordered_map< CInfoCache_Base *, vector< CInfo_Base * >, PtrHash > TCacheMap
void ReleaseAllLoadLocks(void)
void ReleaseAllUsedInfos(void)
unordered_map< CInfo_Base *, CRef< CInfoRequestorLock >, PtrHash > TLockMap
CRef< CInfo_Base > m_WaitingForInfo
virtual ~CInfoRequestor(void)
friend class CInfoRequestorLock
CRef< CInfoRequestorLock > x_GetLock(CInfoCache_Base &cache, CInfo_Base &info)
list< CRef< CInfo_Base > > TGCQueue
CRef< CLoadMutex > m_LoadMutex
virtual ~CInfo_Base(void)
bool IsLoading(void) const
atomic< CInfoRequestor * > m_LoadingRequestor
#define ITERATE(Type, Var, Cont)
ITERATE macro to sequence through container elements.
CRef< C > Ref(C *object)
Helper functions to get CRef<> and CConstRef<> objects.
bool ReferencedOnlyOnce(void) const THROWS_NONE
Check if object is referenced only once.
#define END_NCBI_SCOPE
End previously defined NCBI scope.
#define END_SCOPE(ns)
End the previously defined scope.
#define BEGIN_NCBI_SCOPE
Define ncbi namespace.
#define BEGIN_SCOPE(ns)
Define a new scope.
void Lock(void)
Lock mutex.
void Unlock(void)
Unlock mutex.
DEFINE_CLASS_STATIC_MUTEX(CInfoLock_Base::sm_DataMutex)
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4