cc¸µ¹öÆÛ°ü·ÃÇÏ¿©Áú¹®µå·Á¿ä
ºñ°ø°³
( )
2017.12.19 17:57:44
[c/c++]¸µ¹öÆÛ °ü·ÃÇÏ¿© Áú¹® µå·Á¿ä
¾È³çÇϼ¼¿ä

¸µ¹öÆÛ(ȯÇüÅ¥)¸¦ ¸¸µé°í Àִµ¥ ÇöÀç »ç¿ëÁßÀÎ »çÀÌÁ ±¸ÇÏ´Â °æ¿ì

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);

Áú¹® | 2,069¸íÀÌ Àоú¾î¿ä.


·¹¾î¡¤À¯¸Ó¡¤ÀÚÀÛ Àαâ±Û
1 ³×À̹ö Ä«Æä '¾ï¿ïÇÑ ¼º¹üÁËÀÚ ¾ÈµÇ±â' 17½Ã°£ Àü
2 »ê»çÅ ¹ß»ýÇÑ ºí¶óÀεå 8½Ã°£ Àü
3 ŸÀÎÀÇ ¿¬¾ÖÀ¯Çü 16½Ã°£ Àü
4 ÇѼÜÇÇ¼È ¿ÃŸÀÓ ·¹Àüµå1À§ 9½Ã°£ Àü
7°³ÀÇ ´ñ±Û
1 ºñ°ø°³
2°³ ÀÌ»óÀÇ ¾²·¹µå¿¡¼­ ½á¾ß ÇÏ¸é ´ç¿¬È÷ µ¿±âÈ­¸¦ ÇØ¾ßÁÒ..
ÇÑÁÙ¿¡ ¾´´Ù°í Çѹø¿¡ ½ÇÇàµÈ´Ù´Â º¸ÀåÀº ¾îµð¿¡µµ ¾øÀ¾´Ï´Ù
2017/12/19 18:48
2 ºñ°ø°³
1// ÃÖ¼Ò´ÜÀ§ ¿ÀÆÛ·¹ÀÌ¼Ç ¸»¾¸À̽Ű¡¿ä? ±×·¯°íº¸´Ï Àú°Å ¸»°íµµ rear³ª front À̵¿½Ãų¶§ º¹»ç¸¦ Çѹø¿¡ ¸øÇϴ°æ¿ì(ÇѹÙÄû ³Ñ¾î°¡¼­ µµ´Â °æ¿ì)¿¡ µÎ¹ø¿¡ ³ª´²¼­°¡ ¾Æ´Ñ Çѹø¿¡ À̵¿ÇÏ¸é µ¿±âÈ­ ¹®Á¦°¡ ÇØ°áµÈ´Ù°í µé¾ú´Âµ¥ À̰͵µ ¹®Á¦°¡ ÀÖ³ª¿ä?
2017/12/19 18:57
3 ºñ°ø°³
> Çѹø¿¡ À̵¿ÇÏ¸é µ¿±âÈ­ ¹®Á¦°¡ ÇØ°áµÈ´Ù°í µé¾ú´Âµ¥

µ¿±âÈ­ ÀåÄ¡¸¦ ¾²Áö ¾ÊÀ¸¸é ±×°É 'ÇÑ ¹ø' À̶ó°í º¸Àå¹ÞÀ» ¼ö°¡ ¾øÀ¾´Ï´Ù.
½ÉÁö¾î a=b; ³ª a++; °°Àº 1°³ÀÇ ¿¬»êÀÚÁ¶Â÷µµ ÇѹøÀ̶ó°í º¸ÀåÇÒ ¼ö ¾øÀ¾´Ï´Ù.
±×³É º¸±â¿£ ÇÑÁÙÀÌÁö¸¸ ¾î¼Àºí¸®´Ü±îÁö ³»·Á°¡¸é ¿©·¯°³ÀÇ ¸í·É¾î·Î Âɰ³Áö±â ¶§¹®ÀÔ´Ï´Ù.
ÀÚ¼¼ÇÑ°Ç atomic operation À» °Ë»öÇØº¸¼¼¿ä
2017/12/19 19:08
4 ºñ°ø°³
atomic ½á¼­ ´Ù µ¿±âÈ­ ½ÃÄѾßÁ®
2017/12/19 19:26
5 ºñ°ø°³
µ¿±âÈ­ ¸»°ï ´äÀ̾ø½À´Ï´Ù ¶ô ÀâÀ¸¼¼¿©
2017/12/19 19:27
6 ºñ°ø°³
int a = 5 + 3

À̰оî¼À·¹º§(ÀÎÅÚ±âÁØ)·Î ³»·Á°¡¸é ÀÌ·¸°ÔµÊ

MOV BX, 5
MOV CX, 3
ADD BX, CX
OUT AX, [a]

´Ü¼øÇÑ add Çϳªµµ ¿©·¯°³ÀÇ ¿ÀÆÛ·¹À̼ÇÀ¸·Î ÀÌ·ç¾îÁ®ÀÖÀ¸´Ï µû¶ó¼­ µ¿±âÈ­¾øÀÌ´Â ³ë´ä
2017/12/19 19:30
7 ºñ°ø°³
°Å±â¿¡ ÄÄÆÄÀÏ·¯ ÃÖÀûÈ­±îÁö °¡¹ÌµÇ¸é ±×¾ß¸»·Î È¥µ·ÀÇÄ«¿À½º (¹Ìħ)
2017/12/19 19:52
°Ô½ÃÆÇ ¸ñ·ÏÀ¸·Î µ¹¾Æ°¡±â