当前位置: 首页>>代码示例>>C++>>正文


C++ shared_ptr::getTemperature方法代码示例

本文整理汇总了C++中std::tr1::shared_ptr::getTemperature方法的典型用法代码示例。如果您正苦于以下问题:C++ shared_ptr::getTemperature方法的具体用法?C++ shared_ptr::getTemperature怎么用?C++ shared_ptr::getTemperature使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在std::tr1::shared_ptr的用法示例。


在下文中一共展示了shared_ptr::getTemperature方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: QString

int thp::LayerLRUCache::add(std::tr1::shared_ptr<Bundle> sp)
{
	lockForWrite();

	// 检查资源已经存在
	QString qsName = sp->getName();
	QHash<QString,int>::iterator it = m_hmapResources.find(qsName);
	if(it != m_hmapResources.end())
	{
		unlock(false);
		return 0;
	}

	if(m_unUsedKBCount < m_unMaxKBCount)
	{
		// 加入资源到lru头部
		m_hmapResources.insert(qsName, 0);
		m_listHotColdResources.push_front(sp);

#ifdef _THP_TJ
		unsigned int nbKb = sp->getMaxKB();
		QString qsInfo = QString( "%0,%1,%2" ).arg( GB("LRU") ).arg( GB(sp->getPath()) ).arg( nbKb );
		m_pLogWriter->debugLog(qsInfo);
#endif

		m_unUsedKBCount += sp->getMaxKB();
		unlock(false);
		return 0;
	}
	
	while(m_unUsedKBCount > m_unMaxKBCount)
	{
		sPtr sp = m_listHotColdResources.back();
		while( sp->getTemperature() > 2)
		{
			sp->setTemperature(0);
			m_listHotColdResources.move_head_forward();
			continue;
		}

		if( m_unUsedKBCount < sp->getMaxKB() )
		{
			m_pLogWriter->errorLog("LRU错误");
			break;
		}

		m_unUsedKBCount -= sp->getMaxKB();
	
		m_listHotColdResources.pop_back();
		m_hmapResources.remove(qsName);
	}

	// 加入资源
	m_listHotColdResources.insert_n(m_listHotColdResources.size()/2, sp);
	m_hmapResources.insert(qsName, 0);

	// 维护占用值
	m_unUsedKBCount += sp->getMaxKB();

#ifdef _THP_TJ
	// CLASS, MAX, CURRENT, BUNDLE个数
	QString qsInfo = QString( GB("%0,%1,%2,%3") ).arg( GB("LRUSTATUS") ).arg( m_unMaxKBCount ).arg( m_unUsedKBCount ).arg( m_listHotColdResources.size() );
	m_pLogWriter->debugLog(qsInfo);
#endif

	unlock(false);
	return 0;
}
开发者ID:xueye9,项目名称:thp-WMTSSvr,代码行数:68,代码来源:LayerLRUCache.cpp


注:本文中的std::tr1::shared_ptr::getTemperature方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。