¸µ¹öÆÛ(ȯÇüÅ¥)¸¦ ¸¸µé°í Àִµ¥ ÇöÀç »ç¿ëÁßÀÎ »çÀÌÁ ±¸ÇÏ´Â °æ¿ì
int CRingBuffer::GetUseSize(void)
{
if (_rear > _front)
{
return _rear - _front;
}
else if (_rear < _front)
{
return _rear + (_size - _front);
}
else
{
// °°À¸¸é
return 0;
}
}
ÀÌ·±½ÄÀ¸·Î front¿Í rear¸¦ È°¿ëÇؼ ±¸ÇÏ°í ÀÖ½À´Ï´Ù.
±×·±µ¥ ÀÌ°Ô ¸ÖƼ½º·¹µå ȯ°æÀÌ µÇ¸é, Àüü »çÀÌÁî°¡ 10, rear°¡ 4, front°¡ 6ÀÌ¿´À»¶§ µÎ¹ø° Á¶°ÇÀ» ÅÀ´Âµ¥ ±× »çÀÌ front°¡ ÇѹÙÄû µ¹¾Æ 1ÀÌ µÇ¹ö¸± °æ¿ì °á°ú°¡ 13ÀÌ µÇ¾î¹ö¸³´Ï´Ù.
ÀÎÅ¥¸¦ ÇÒ¶§ (Àüü»çÀÌÁî - »ç¿ëÁßÀλçÀÌÁî) ·Î ³ÖÀ» ¼ö ÀÖ´Â »çÀÌÁ °è»êÇؼ memcpy¸¦ ÇÏ°Ô µÇ´Âµ¥ À§ÀÇ °æ¿ì¿¡ ¸âÄ«ÇÇÇÒ »çÀÌÁî°¡ -3ÀÌ µË´Ï´Ù.
ÀÌ·± »óȲÀ϶§ µ¿±âÈ °´Ã¼°°Àº°É ¾È¾²°í ÇØ°áÇÒ ¹æ¹ýÀÌ ÀÖ³ª¿ä?
¹öÆÛ¿À¹öÇÃ·Î¿ì °Ë»öÇؼ ÀÌ·±°É ã±â´Â Çߴµ¥ ÀÌ°É·Î ÇØ°áÀÌ µÉÁö ±Ã±ÝÇÕ´Ï´Ù..
//int remaining = (rear - front) + (-((int)(rear <= front)) & bufferSize);
Áú¹® | 1334¸íÀÌ Àоú¾î¿ä. 3.16.137.10