15-1-¶ó.volatile

volatile Å°¿öµå´Â const¿Í ÇÔ²² º¯¼öÀÇ ¼ºÁúÀ» ¹Ù²Ù´Â ¿ªÇÒÀ» Çϴµ¥ ÀÌ µÑÀ» ¹­¾î cv ÁöÁ¤ÀÚ(Qualifier:Á¦ÇÑÀÚ¶ó°í ¹ø¿ªÇϱ⵵ ÇÑ´Ù)¶ó°í ÇÑ´Ù. const¿¡ ºñÇØ »ó´ëÀûÀ¸·Î »ç¿ë ºóµµ°¡ Áö±ØÈ÷ ³·À¸¸ç ÀÌ Å°¿öµå°¡ ²À ÇÊ¿äÇÑ °æ¿ì´Â ¹«Ã´ µå¹°´Ù. ¾î¶² °æ¿ì¿¡ volatileÀÌ ÇÊ¿äÇÑÁö ´ÙÀ½ Äڵ带 º¸ÀÚ.

 

int i;

double j;

 

for (i=0;i<100;i++) {

     j=sqrt(2.8)+log(3.5)+56;

     // do something

}

 

ÀÌ ÄÚµå´Â ·çÇÁ¸¦ 100¹ø ½ÇÇàÇϸ鼭 ¾î¶² ÀÛ¾÷À» Çϴµ¥ ·çÇÁ ³»ºÎ¿¡¼­ j¿¡ º¹ÀâÇÑ ¿¬»ê °á°ú¸¦ ´ëÀÔÇÏ°í ÀÖ´Ù. j°ªÀ» °è»êÇÏ´Â ½ÄÀÌ Á¶±Ý º¹ÀâÇÏÁö¸¸ Á¦¾î º¯¼ö i°ªÀ» ÂüÁ¶ÇÏÁö ¾Ê±â ¶§¹®¿¡ i ·çÇÁ°¡ ½ÇÇàµÇ´Âµ¿¾È jÀÇ °ªÀº »ó¼ö³ª ¸¶Âù°¡ÁöÀ̸ç Àý´ë·Î º¯°æµÇÁö ¾Ê´Â´Ù. ·çÇÁ ½ÇÇàÁß¿¡´Â »ó¼öÀ̹ǷΠÀÌ °ªÀ» ¸Å ·çÇÁ¸¶´Ù ´Ù½Ã °è»êÇÏ´Â °ÍÀº ½Ã°£ ³¶ºñÀÌ´Ù. ±×·¡¼­ Á¦´ë·Î µÈ ÄÄÆÄÀÏ·¯´Â ÀÌ ·çÇÁ¸¦ ´ÙÀ½°ú °°ÀÌ ¼öÁ¤ÇÏ¿© ÄÄÆÄÀÏÇÑ´Ù.

 

j=sqrt(2.8)+log(3.5)+56;

for (i=0;i<100;i++) {

     // do something

}

 

jÀÇ °ªÀ» °è»êÇÏ´Â ½ÄÀ» ·çÇÁ ÀÌÀüÀ¸·Î ¿Å°Ü¼­ ¹Ì¸® °è»êÇØ ³õ°í ·çÇÁ ³»ºÎ¿¡¼­´Â j°ªÀ» »ç¿ëÇϱ⸸ Çß´Ù. ¾îÂ÷ÇÇ ·çÇÁ ³»ºÎ¿¡¼­ j°ªÀÌ ¹Ù²î´Â °ÍÀÌ ¾Æ´Ï¹Ç·Î ÀÌ·¸°Ô Äڵ带 ¼öÁ¤Çصµ ¿ø·¡ ÄÚµå¿Í ¿ÏÀüÈ÷ µ¿ÀÏÇÑ µ¿ÀÛÀ» ÇÒ °ÍÀÌ´Ù. ¶È¶ÈÇÑ ÄÄÆÄÀÏ·¯´Â ÇÁ·Î±×·¡¸Ó°¡ Äڵ带 ´ëÃæ Â¥ ³õ¾Æµµ ¼Óµµ¸¦ ³ôÀ̱â À§ÇØ ÀÚµ¿À¸·Î ÃÖÀûÈ­¸¦ ÇÏ´Â ±â´ÉÀ» °¡Áö°í ÀÖÀ¸¸ç ÀÌ·± ¾Ï¹¬ÀûÀÎ ÃÖÀûÈ­ ±â´É¿¡ ÀÇÇØ ÇÁ·Î±×·¥ÀÇ ¼º´ÉÀÌ Çâ»óµÈ´Ù.

±×·¸´Ù¸é À§ µÎ Äڵ尡 Á¤¸»·Î ¿ÏÀüÈ÷ µ¿ÀÏÇÒ±î ÀǽÉÀ» °¡Á® º¸ÀÚ. j´Â ºÐ¸íÈ÷ ·çÇÁ ³»ºÎ¿¡¼­ »ó¼öÀ̹ǷΠ¹Ì¸® °è»êÇØ ³õ¾Æµµ ¾Æ¹« ¹®Á¦°¡ ¾øÀ½ÀÌ È®½ÇÇÏ´Ù. ±×·¯³ª ¾ÆÁÖ Æ¯¼öÇÑ °æ¿ì ÃÖÀûÈ­µÈ Äڵ尡 ¿ø·¡ ÄÚµå¿Í ´Ù¸¥ µ¿ÀÛÀ» ÇÒ °æ¿ì°¡ ÀÖ´Ù. ¾î¶² °æ¿ìÀΰ¡ Çϸé ÇÁ·Î±×·¥ÀÌ ¾Æ´Ñ ¿ÜºÎ¿¡¼­ jÀÇ °ªÀ» º¯°æÇÒ ¶§ÀÌ´Ù.

µµ½º ȯ°æ¿¡¼­´Â ÀÎÅÍ·´Æ®¶ó´Â °ÍÀÌ ÀÖ°í À¯´Ð½º ȯ°æ¿¡¼­´Â µ¥¸ó, À©µµ¿ìÁî ȯ°æ¿¡¼­´Â ¼­ºñ½º µîÀÇ ¹é±×¶ó¿îµå ÇÁ·Î¼¼½º°¡ Ç×»ó ½ÇÇàµÈ´Ù. ÀÌ·± ¹é±×¶ó¿îµå ÇÁ·Î¼¼½º°¡ ¸Þ¸ð¸®ÀÇ ¾î¶² »óȲÀ̳ª Àü¿ªº¯¼ö¸¦ º¯°æÇÒ ¼ö ÀÖÀ¸¸ç °°Àº ÇÁ·Î¼¼½º ³»¿¡¼­µµ ½º·¹µå°¡ ¿©·¯ °³¶ó¸é ´Ù¸¥ ½º·¹µå°¡ jÀÇ °ªÀ» ¾ðÁ¦µçÁö º¯°æÇÒ °¡´É¼ºÀÌ ÀÖ´Ù. ¶ÇÇÑ Çϵå¿þ¾î¿¡ ÀÇÇØ Àü¿ª ȯ°æÀÌ ¹Ù²ð ¼öµµ ÀÖ´Ù.

¿¹¸¦ µé¾î À§ Äڵ带 ½ÇÇàÇÏ´Â ÇÁ·Î¼¼½º°¡ µÎ °³ÀÇ ½º·¹µå¸¦ °¡Áö°í ÀÖ°í ´Ù¸¥ ½º·¹µå¿¡¼­ ¾î¶² Á¶°Ç¿¡ ÀÇÇØ Àü¿ªº¯¼ö j°ª(¶Ç´Â j¿¡ ¿µÇâÀ» ¹ÌÄ¡´Â ´Ù¸¥ °ª)À» °©ÀÚ±â ¹Ù²Ü ¼öµµ ÀÖ´Ù°í ÇÏÀÚ. ÀÌ·± °æ¿ì ·çÇÁ ³»ºÎ¿¡¼­ ¸Å¹ø j°ªÀ» ´Ù½Ã °è»êÇÏ´Â °Í°ú ·çÇÁ¿¡ µé¾î°¡±â Àü¿¡ ¹Ì¸® °è»êÇØ ³õ´Â °ÍÀÌ ´Ù¸¥ °á°ú¸¦ °¡Á®¿Ã ¼ö ÀÖ´Ù. i·çÇÁ°¡ 50ȸ° ½ÇÇàÁß¿¡ ´Ù¸¥ ½º·¹µå°¡ j¸¦ ¹Ù²Ù¾î ¹ö¸± ¼öµµ ÀÖ´Â °ÍÀÌ´Ù.

ÀÌ·± °æ¿ì¿¡ ¾²´Â °ÍÀÌ ¹Ù·Î volatileÀÌ´Ù. ÀÌ Å°¿öµå¸¦ º¯¼ö ¼±¾ð¹® ¾Õ¿¡ ºÙÀ̸é ÄÄÆÄÀÏ·¯´Â ÀÌ º¯¼ö¿¡ ´ëÇؼ­´Â ¾î¶°ÇÑ ÃÖÀûÈ­ 󸮵µ ÇÏÁö ¾Ê´Â´Ù. ÄÄÆÄÀÏ·¯°¡ º¸±â¿¡ Äڵ尡 ºñÈ¿À²ÀûÀÌ°Ç ¾î·°Ç °³¹ßÀÚ°¡ ÀÛ¼ºÇÑ ÄÚµå ±×´ë·Î ÄÄÆÄÀÏÇÑ´Ù. Áï volatile Å°¿öµå´Â "Àß³­Ã´ ÇÏÁö ¸»°í ½ÃÅ°´Â ´ë·Î ÇØ"¶ó´Â ¶æÀÌ´Ù. ¾î¶² º¯¼ö¸¦ ´Ù¸¥ ÇÁ·Î¼¼½º³ª ½º·¹µå°¡ ¹Ù²Ü ¼öµµ ÀÖ´Ù´Â °ÍÀ» ÄÄÆÄÀÏ·¯´Â ¾Ë ¼ö ¾ø±â ¶§¹®¿¡ Àü¿ª ȯ°æÀ» ÂüÁ¶ÇÏ´Â º¯¼ö¿¡ ´ëÇؼ­´Â °³¹ßÀÚ°¡ volatile ¼±¾ðÀ» ÇØ¾ß ÇÑ´Ù. À§ Äڵ忡¼­ j ¼±¾ð¹® ¾Õ¿¡ volatile¸¸ ºÙÀÌ¸é ¹®Á¦°¡ ÇØ°áµÈ´Ù.

 

volatile double j;

 

ÀÌ Å°¿öµå°¡ ¹Ýµå½Ã ÇÊ¿äÇÑ »óȲ¿¡ ´ëÇÑ ¿¹Á¦¸¦ ¸¸µé¾î º¸ÀÌ´Â °ÍÀº ±²ÀåÈ÷ ¾î·Æ´Ù. ¿Ö³ÄÇÏ¸é ¿ÜºÎ¿¡¼­ °ªÀ» ¹Ù²Ü °¡´É¼ºÀÌ ÀÖ´Â º¯¼ö¿¡ ´ëÇؼ­¸¸ ÀÌ Å°¿öµå°¡ ÇÊ¿äÇѵ¥ ±×·± ¿¹Á¦´Â º¸Åë Å©±â°¡ ¾Æ´Ï±â ¶§¹®ÀÌ´Ù. Àß »ç¿ëµÇÁö ¾Ê´Â Å°¿öµåÀ̹ǷΠ¿©±â¼­´Â °³³ä¸¸ ÀÍÇô µÎµµ·Ï ÇÏÀÚ.