亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? circuitqueue.h

?? 奇跡世界公用文件源代碼,研究網(wǎng)絡(luò)游戲的朋友可以研究下
?? H
字號(hào):
#ifndef _CIRCUITQUEUE_H_
#define _CIRCUITQUEUE_H_

#include <windows.h>
#include <stdio.h>
#include <assert.h>

//=============================================================================================================================
/// 盔屈 鈕 努貳膠 袍敲復(fù)
//=============================================================================================================================
template<typename T>
class CircuitQueue
{
public:
	CircuitQueue() : m_pData( NULL ), m_nLength( 0 ), m_nSize( 0 ), m_nHead( 0 ), m_nTail( 0 )
	{
		InitializeCriticalSection( &m_cs );		
	}
	
	virtual ~CircuitQueue()
	{
		if( m_pData ) delete [] m_pData;
		DeleteCriticalSection( &m_cs );
	}
	
//=============================================================================================================================
/**
	@remarks
			鈕甫 積己茄促.
	@param	nSize
			鈕 葷撈令
	@param	nExtraSize
			菩哦撈 滾欺 第率俊輯 菊率欄肺 唱穿絹 甸絹哎 錠 菩哦闌 撈絹林扁 困秦 犬焊且
			滾欺 第率 咯盒狼 皋葛府 農(nóng)扁(角力 咯盒 皋葛府 = sizeof(T) * nExtraSize )
*/
//=============================================================================================================================
	void Create( int nSize, int nExtraSize = 0 )
	{
		EnterCriticalSection( &m_cs );
		if( m_pData ) delete [] m_pData;

		m_pData			= new T[nSize + nExtraSize];
		m_nSize			= nSize;
		m_nExtraSize	= nExtraSize;
		LeaveCriticalSection( &m_cs );
	}

//=============================================================================================================================
/**
	@remarks
			鈕甫 沒(méi)家茄促.
*/
//=============================================================================================================================
	inline void Clear()
	{
		EnterCriticalSection( &m_cs );

		m_nLength       = 0;
		m_nHead         = 0;
		m_nTail         = 0;

		LeaveCriticalSection( &m_cs );
	}
	
	/// 鈕狼 巢籃 傍埃闌 府畔茄促.
	inline int      GetSpace()
	{
		int iRet;

		EnterCriticalSection( &m_cs );
		iRet = m_nSize - m_nLength;		
		LeaveCriticalSection( &m_cs );

		return iRet;
	}

	/// 泅犁 葷儈吝牢 鈕狼 農(nóng)扁甫 府畔茄促.
	inline int      GetLength()
	{
		int iRet;

		EnterCriticalSection( &m_cs );
		iRet = m_nLength;
		LeaveCriticalSection( &m_cs );

		return iRet;
	}

	/// 單撈磐啊 鈕 第率欄肺 菜 瞞輯 菊欄肺 撈絹瘤綽 版快, 第率 場(chǎng)鱉瘤狼 單撈磐 俺薦甫 府畔茄促.
	inline int      GetBackDataCount()
	{
		int iRet;

		EnterCriticalSection( &m_cs );
		iRet = m_nSize - m_nHead;
		LeaveCriticalSection( &m_cs );

		return iRet;
	}

	/// 單撈磐甫 佬闌 器牢磐(Head)甫 府畔茄促.
	inline T*       GetReadPtr()
	{
		T *pRet;

		EnterCriticalSection( &m_cs );
		pRet = m_pData + m_nHead;

		// 父距 滾欺 蓋 第率 單撈磐甫 佬欄妨綽 版快 咯盒狼 滾欺俊 利例灑 汗葷秦霖促.
		int nSplitFirstDataCount;
		if( m_nHead > m_nTail && ( nSplitFirstDataCount = m_nSize - m_nHead ) < m_nExtraSize )
		{
			memcpy( m_pData + m_nSize, m_pData, sizeof(T) * ( m_nExtraSize - nSplitFirstDataCount ) );
		}

		LeaveCriticalSection( &m_cs );

		return pRet;
	}

	/// 單撈磐甫 鏡 器牢磐(Tail)甫 府畔茄促.
	inline T*       GetWritePtr()
	{
		T *pRet;

		EnterCriticalSection( &m_cs );
		pRet = m_pData + m_nTail;
		LeaveCriticalSection( &m_cs );

		return pRet;
	}
	
	/// 肋府瘤 臼絆 茄鍋俊 佬闌 薦 樂(lè)綽 辨撈甫 府畔茄促.
	inline int GetReadableLen()
	{
		int iRet;

		EnterCriticalSection( &m_cs );
		if( m_nHead == m_nTail )		iRet = GetLength() > 0 ? m_nSize - m_nHead: 0;
		else if( m_nHead < m_nTail )	iRet = m_nTail - m_nHead;
		else							 iRet = m_nSize - m_nHead;
		LeaveCriticalSection( &m_cs );

		return iRet;
	}
	
	/// 肋府瘤 臼絆 茄鍋俊 靜扁 啊瓷茄 辨撈甫 府畔茄促.
	inline int GetWritableLen()
	{
		int iRet;

		EnterCriticalSection( &m_cs );
		if( m_nHead == m_nTail )		iRet = GetLength() > 0 ? 0 : m_nSize - m_nTail;
		else if( m_nHead < m_nTail )	iRet = m_nSize - m_nTail;
		else							iRet = m_nHead - m_nTail;
		LeaveCriticalSection( &m_cs );

		return iRet;
	}

//=============================================================================================================================
/**
	@remarks
			鈕俊 單撈磐甫 持綽促.
	@param	pSrc
			鈕俊 火澇且 單撈磐 器牢磐
	@param	nSize
			鈕俊 火澇且 單撈磐狼 辨撈
	@retval	BOOL
			瀝惑利欄肺 單撈磐 火澇撈 場(chǎng)唱擱 TRUE甫 府畔茄促.
			鈕啊 菜瞞輯 火澇且 薦 絕綽 版快 FALSE甫 府畔茄促.
*/
//=============================================================================================================================
	inline BOOL Enqueue( T *pSrc, int nSize )
	{
		EnterCriticalSection( &m_cs );

		if( GetSpace() < nSize )
		{
			LeaveCriticalSection( &m_cs );
			return FALSE;
		}

		/*
		// 單撈磐啊 唱穿絹廉 滴鍋俊 墨喬登綽 版快牢啊?
		BOOL bCopyToExtraBuffer = ( ( m_nHead <= m_nTail ) && ( m_nSize - m_nTail < nSize ) );
		*/

		// pSrc啊 NULL牢 版快 單撈磐 鈕雷 絕撈 tail苞 length父 盎腳茄促.
		if( pSrc )
		{
			if( m_nHead <= m_nTail )
			{
				// 1. head啊 tail焊促 菊俊 樂(lè)綽 版快
				int nBackSpaceCount = m_nSize - m_nTail;

				if( nBackSpaceCount >= nSize )  
				{
					// 第率俊 巢籃 傍埃撈 汗葷且 劇焊促 鞍芭唱 奴 版快 茄鍋俊 汗葷茄促.
					memcpy( m_pData + m_nTail, pSrc, sizeof(T) * nSize );
				}
				else
				{
					// 第率俊 巢籃 傍埃撈 汗葷且 劇焊促 累籃 版快 滴鍋俊 唱穿絹 汗葷茄促.
					memcpy( m_pData + m_nTail, pSrc, sizeof(T) * nBackSpaceCount );
					memcpy( m_pData, pSrc + nBackSpaceCount, sizeof(T) * ( nSize - nBackSpaceCount ) );
				}
			}
			else
			{
				// 2. head啊 tail焊促 第俊 樂(lè)綽 版快
				memcpy( m_pData + m_nTail, pSrc, sizeof(T) * nSize );
			}
		}

		/*
		if( bCopyToExtraBuffer )
		{
			// 第率狼 肋赴 單撈磐甫 咯盒狼 滾欺俊檔 汗葷秦霖促.
			memcpy( m_pData + m_nSize, pSrc + m_nSize - m_nTail, sizeof(T) * ( nSize - ( m_nSize - m_nTail ) ) );
		}
		*/

		m_nTail		+= nSize;
		m_nTail		%= m_nSize;
		m_nLength	+= nSize;

		LeaveCriticalSection( &m_cs );

		return TRUE;
	}

//=============================================================================================================================
/**
	@remarks
			鈕俊輯 單撈磐甫 波辰促.
	@param	pTar
			鈕俊輯 波辰 單撈磐甫 汗葷且 滾欺狼 器牢磐
	@param	nSize
			鈕俊輯 波塵 單撈磐 辨撈
	@retval	BOOL
			瀝惑利欄肺 單撈磐甫 波郴擱 TRUE甫 府畔茄促.
			波塵 單撈磐啊 nSize焊促 利籃 版快 FALSE甫 府畔茄促.
*/
//=============================================================================================================================
	inline BOOL Dequeue( T *pTar, int nSize )
	{    
		EnterCriticalSection( &m_cs );

		if( !Peek( pTar, nSize ) )
		{
			LeaveCriticalSection( &m_cs );
			return FALSE;
		}

		m_nHead		+= nSize;
		m_nHead		%= m_nSize;
		m_nLength	-= nSize;

		LeaveCriticalSection( &m_cs );

		return TRUE;
	}

//=============================================================================================================================
/**
	@remarks
			鈕俊輯 單撈磐甫 波郴瘤 臼絆 汗葷父 秦柯促.
	@param	pTar
			鈕狼 單撈磐甫 汗葷且 滾欺狼 器牢磐
	@param	nSize
			鈕俊輯 汗葷且 單撈磐 辨撈
	@retval	BOOL
			瀝惑利欄肺 單撈磐甫 汗葷竅擱 TRUE甫 府畔茄促.
			波塵 單撈磐啊 nSize焊促 利籃 版快 FALSE甫 府畔茄促.
*/
//=============================================================================================================================
	inline BOOL Peek( T *pTar, int nSize )
	{
		EnterCriticalSection( &m_cs );

		if( m_nLength < nSize )
		{
			LeaveCriticalSection( &m_cs );
			return FALSE;
		}

		// 郴儈闌 罐闌 器牢磐啊 NULL撈 酒囪 版快俊父 皋葛府甫 汗葷茄促.
		if( pTar != NULL )
		{
			if( m_nHead < m_nTail )
			{
				// 1. head啊 tail焊促 菊俊 樂(lè)綽 版快
				memcpy( pTar, m_pData + m_nHead, sizeof(T) * nSize );
			}
			else
			{
				// 2. head啊 tail焊促 第俊 樂(lè)綽 版快
				if( GetBackDataCount() >= nSize )
				{
					// 第率俊 巢籃 單撈磐啊 波郴哎 劇焊促 鞍芭唱 奴 版快 nSize父怒 茄鍋俊 汗葷茄促.
					memcpy( pTar, m_pData + m_nHead, sizeof(T) * nSize );                           
				}
				else
				{
					// 第率俊 巢籃 單撈磐啊 波郴哎 劇焊促 累籃 版快 滴鍋俊 唱穿絹 汗葷茄促.
					memcpy( pTar, m_pData + m_nHead, sizeof(T) * GetBackDataCount() );
					memcpy( pTar + GetBackDataCount(), m_pData, sizeof(T) * ( nSize - GetBackDataCount() ) );
				}
			}
		}

		LeaveCriticalSection( &m_cs );

		return TRUE;
	}

//=============================================================================================================================
/**
	@remarks
			菩哦撈 滾欺 第率俊輯 菊率欄肺 唱穿絹龍 錠 菩哦撈 撈絹瘤檔廢 咯盒狼 傍埃俊 墨喬茄促.
	@param	nSize
			第率俊輯 肋妨輯 菊率欄肺 撈絹柳 單撈磐狼 辨撈
*/
//=============================================================================================================================
	inline void CopyHeadDataToExtraBuffer( int nSize )
	{
		assert( nSize <= m_nExtraSize );

		EnterCriticalSection( &m_cs );

		// 滾欺 蓋 締率 咯盒 滾欺俊促啊 滾欺 蓋 菊率俊 樂(lè)綽 單撈磐甫 敬促.
		memcpy( m_pData + m_nSize, m_pData, nSize );

		LeaveCriticalSection( &m_cs );
	}

protected:
	CRITICAL_SECTION	m_cs;
	T					*m_pData;			/// 鈕 滾欺 器牢磐
	int					m_nLength;			/// 泅犁 單撈磐 辨撈
	int					m_nSize;			/// 鈕 滾欺狼 傈眉 農(nóng)扁
	int					m_nHead;			/// 泅犁 單撈磐啊 矯累登綽 鎊狼 困摹
	int					m_nTail;			/// 泅犁 單撈磐啊 結(jié)龍 鎊狼 困摹
	int					m_nExtraSize;		/// 鈕 第率俊 咯盒欄肺 棱闌 滾欺 農(nóng)扁 
};

#endif










?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩免费福利电影在线观看| 亚洲成a人片在线观看中文| 中文字幕不卡在线| 亚洲久草在线视频| 日本不卡在线视频| 国产精品伊人色| 欧美性生交片4| 久久久久久久电影| 一区二区三区美女| 国产一区二区三区综合| 国产视频911| 亚洲人成影院在线观看| 麻豆国产精品官网| 91黄色激情网站| 高潮精品一区videoshd| 色噜噜狠狠成人中文综合| 日韩午夜小视频| 国产精品久久久久久久第一福利 | 日韩成人午夜精品| 国产精品2024| 欧美视频自拍偷拍| 国产日韩成人精品| 日韩国产欧美三级| 成人免费不卡视频| 欧美一级欧美一级在线播放| 国产精品麻豆欧美日韩ww| 日韩激情视频网站| 91香蕉视频污在线| 欧美精品一区二区三区高清aⅴ| 亚洲乱码国产乱码精品精98午夜| 精品夜夜嗨av一区二区三区| 色哟哟一区二区| 国产无一区二区| 日韩黄色免费电影| 在线一区二区视频| 中文字幕成人网| 久久精品国产亚洲高清剧情介绍| 91豆麻精品91久久久久久| 国产欧美精品一区二区色综合朱莉 | 老司机午夜精品99久久| 在线一区二区三区| 国产精品三级在线观看| 久久爱www久久做| 欧美日韩久久久久久| 亚洲欧美怡红院| 国产成人精品aa毛片| 这里只有精品99re| 亚洲国产成人av网| 91免费看片在线观看| 日本一区二区在线不卡| 国模一区二区三区白浆| 91精品国产综合久久精品图片| 亚洲狠狠丁香婷婷综合久久久| 高清视频一区二区| 精品亚洲免费视频| 欧美美女一区二区三区| 亚洲综合色噜噜狠狠| 99久久精品国产观看| 国产精品入口麻豆九色| 国产91丝袜在线播放0| 国产日韩欧美精品在线| 国内精品久久久久影院一蜜桃| 日韩一区二区免费视频| 日韩专区欧美专区| 欧美精品123区| 性做久久久久久免费观看欧美| 日本韩国精品一区二区在线观看| 国产精品女人毛片| 成人午夜大片免费观看| 欧美韩国一区二区| 国产.精品.日韩.另类.中文.在线.播放 | 久久久久88色偷偷免费| 久久69国产一区二区蜜臀| 欧美一区二区三区视频| 免费在线观看一区二区三区| 欧美福利视频一区| 日本午夜一区二区| 日韩一区和二区| 免费观看一级特黄欧美大片| 日韩小视频在线观看专区| 麻豆精品在线视频| xvideos.蜜桃一区二区| 国产高清不卡二三区| 国产精品女同互慰在线看| 97久久精品人人做人人爽50路| 日韩一区中文字幕| 欧美三级在线播放| 全部av―极品视觉盛宴亚洲| 欧美成人福利视频| 国产成人精品免费网站| 国产精品情趣视频| 色婷婷综合久久久中文字幕| 亚洲综合自拍偷拍| 欧美精品亚洲二区| 狠狠色丁香婷综合久久| 国产女主播视频一区二区| 成人福利视频在线看| 亚洲欧美偷拍卡通变态| 欧美日韩一区视频| 精品在线视频一区| 中文字幕成人av| 色偷偷成人一区二区三区91| 一区二区理论电影在线观看| 6080国产精品一区二区| 国产盗摄女厕一区二区三区| 综合在线观看色| 欧美丰满一区二区免费视频| 狠狠色丁香婷综合久久| 亚洲欧洲精品一区二区精品久久久| 色综合久久88色综合天天| 日韩精品一级二级| 国产视频亚洲色图| 欧美亚州韩日在线看免费版国语版| 蜜桃精品在线观看| 中文字幕日韩精品一区| 91精品国产高清一区二区三区蜜臀 | 欧美精品电影在线播放| 国产在线麻豆精品观看| 亚洲欧美激情视频在线观看一区二区三区 | 欧美韩国日本综合| 欧美日韩免费高清一区色橹橹| 狠狠v欧美v日韩v亚洲ⅴ| 亚洲欧美日本在线| 欧美va日韩va| 91国偷自产一区二区使用方法| 久久国产视频网| 亚洲免费观看视频| 久久久久久久久久久电影| 欧美三级三级三级爽爽爽| 国产精品1区二区.| 日本中文在线一区| 亚洲色图制服诱惑 | 国产剧情一区在线| 一区二区成人在线视频| xnxx国产精品| 欧美日韩黄色一区二区| 成人免费的视频| 九色|91porny| 性欧美疯狂xxxxbbbb| 中文字幕一区av| 精品国产髙清在线看国产毛片| 91精品91久久久中77777| 国产经典欧美精品| 日韩国产在线一| 亚洲精品国产精品乱码不99| 国产午夜精品久久久久久久 | 国产精品自拍三区| 日本中文一区二区三区| 一区二区三区蜜桃| 国产精品色婷婷久久58| 精品福利一区二区三区免费视频| 精品视频资源站| 91在线看国产| 国产成人精品免费在线| 激情深爱一区二区| 免费观看30秒视频久久| 亚洲国产欧美在线人成| 中文字幕综合网| 中文字幕的久久| 久久久久久久免费视频了| 精品日韩一区二区三区免费视频| 欧美日韩三级视频| 91成人在线免费观看| 91女神在线视频| av在线播放一区二区三区| 国产精品一二三在| 国产美女在线观看一区| 狠狠色狠狠色综合日日91app| 裸体一区二区三区| 免费看欧美美女黄的网站| 天天综合色天天| 亚洲成a天堂v人片| 天天爽夜夜爽夜夜爽精品视频| 一级日本不卡的影视| 亚洲精品福利视频网站| 亚洲视频免费观看| 亚洲婷婷国产精品电影人久久| 日韩毛片一二三区| 亚洲人123区| 亚洲综合偷拍欧美一区色| 一区二区三区四区乱视频| 亚洲免费高清视频在线| 亚洲美女淫视频| 亚洲制服丝袜av| 亚洲国产aⅴ成人精品无吗| 亚洲成人在线免费| 午夜日韩在线电影| 日本亚洲欧美天堂免费| 精品一区二区三区免费毛片爱 | 国产精品久久久久久一区二区三区| 久久精品在线免费观看| 国产欧美日韩不卡免费| 中文字幕一区二区三区不卡在线| 亚洲天堂成人在线观看| 一区二区三区精品久久久| 亚洲成人激情自拍| 男人操女人的视频在线观看欧美| 老司机精品视频一区二区三区| 国产在线观看一区二区| 成人深夜在线观看|