[ CnUnix ] in KIDS ±Û ¾´ ÀÌ(By): Nyang (¹ÙÇϵ¿»ý) ³¯ Â¥ (Date): 2002³â 9¿ù 7ÀÏ Åä¿äÀÏ ¿ÀÀü 09½Ã 07ºÐ 07ÃÊ Á¦ ¸ñ(Title): [Q] thread¿Í volatile multi-thread(pthread)°¡ ÇϳªÀÇ Àü¿ªº¯¼ö¸¦ ´Ù·ì´Ï´Ù. ÀÌ °æ¿ì mutex/conditional variable·Î Àß Á¶ÀýÇؼ­ ¾²°í Àִµ¥, ±× "volatile" keyword°¡ ¹®Á¦±º¿ä. ½á¼­ ¹®Á¦°¡ ¾Æ´Ï¶ó ¾È½á¼­ ¹®Á¦. ÇÑ thread°¡ queue¿¡ ¹º°¡¸¦ Áý¾î³Ö¾ú´Âµ¥, ´Ù¸¥ thread¿¡¼­ ÀÐÁö¸¦ ¸øÇÒ ¶§°¡ °¡²û »ý±é´Ï´Ù. ±× Àü¿ª º¯¼ö·Î ¼±¾ðµÈ queue¸¦ volatile·Î ¼±¾ðÇß´õ´Ï, ¹®Á¦°¡ Ç®¸®´Â°Í °°±â´Â Çѵ¥... muti-thread programmingÇÒ ¶§ threadµéÀÌ °øÀ¯ÇÏ´Â Àü¿ª º¯¼ö´Â "Ç×»ó volatile·Î ¼±¾ð" ÇØ¾ß Çϳª¿ä? [ CnUnix ] in KIDS ±Û ¾´ ÀÌ(By): swhan (foo bar) ³¯ Â¥ (Date): 2002³â 9¿ù 7ÀÏ Åä¿äÀÏ ¿ÀÀü 11½Ã 14ºÐ 10ÃÊ Á¦ ¸ñ(Title): Re: [Q] thread¿Í volatile ¹¹°¡ µÆµç 2°³ ÀÌ»óÀÇ process/thread¿¡¼­ µ¿½Ã Á¢±ÙÇÏ´Â ºÎºÐÀÌ ÀÖ´Ù¸é, ¹«Á¶°Ç volatileÀ» ¾²´Â ½À°üÀ» µé¿©µÎ´Â°Ô ÁÁ½À´Ï´Ù. ³ªÁß¿¡ ´Ù¸¥ °÷¿¡ Æ÷ÆÃÇϰųª ±¸Á¶¸¦ ¹Ù²Ù´õ¶óµµ ¹®Á¦ ¹ß»ýÇÒ È®·üÀÌ Àû¾îÁý´Ï´Ù. [ CnUnix ] in KIDS ±Û ¾´ ÀÌ(By): wizest (°¢°õ) ³¯ Â¥ (Date): 2002³â 9¿ù 9ÀÏ ¿ù¿äÀÏ ¿ÀÈÄ 04½Ã 51ºÐ 44ÃÊ Á¦ ¸ñ(Title): Re: [Q] thread¿Í volatile ÄÄÆÄÀÏ·¯ ÃÖÀûÈ­ ´ë»ó¿¡¼­ Á¦¿Ü µÇ´Â°Í °°½À´Ï´Ù. ÀßÀº ¸ð¸£°ÚÁö¸¸ Àú°Ô ¾øÀ¸¸é ÄÄÆÄÀÏ·¯°¡ º¸°í ÀÇ¹Ì ¾ø´Â ÄÚµå°Å³ª º° ÇÏ´Â ÀÏ ¾ø´Â µ¥µå ÄÚµåÀÏ °æ¿ì ³¯·Á¹ö¸®´Âµ¥ ±×°Ô ½ÇÁ¦ ´Ù¸¥ ÇÁ·Î¼¼¼­³ª ¾²·¹µå¿¡¼­ Àаí Çϴ°Ŷó¸é ±×·±½ÄÀ¸·Î ³¯¾Æ°¡¹ö¸®¸é °ï³­ÇÏÁÒ.. -_- ¹æ±Ý »ý°¢³­ ¿¹Á¦·Î´Â À½.. ¸Þ¸ð¸®¿¡¼­ ÆÐÄ¡Çؼ­ ·¹Áö½ºÅÍ¿¡ ÀúÀåÇÏ°í ±×ÀÌÈÄ¿¡ °è¼Ó ·¹Áö½ºÅ͸¸ º»´Â Äڵ尡 ÀÖ´Ù¸é... (½ÇÁ¦·Î´Â ¸Þ¸ð¸®¸¦ º¸°Ô Çߴµ¥ ÄÄÆÄÀÏ·¯°¡ ÃÖÀûÈ­ ÇÏ´Ùº¸´Ï.. ÀÌ°Ô ¸Þ¸ð¸®¿¡¼­ Çѹø ÆÐÄ¡ÀÌÈÄ º¯ÇÏ´Â°Ô ¾ø¾îº¸Àδٴ °Ì´Ï´Ù.) ´Ù¸¥ ¾²·¹µå³ª ÇÁ·Î¼¼¼­¿¡¼­ ¸Þ¸ð¸® ³»¿ëÀ» ¹Ù²Ù¾î Áá´Âµ¥ ÀÌÂÊÆí¿¡¼± ±×³É ·¹Áö½ºÅ͸¸ Çѹø ´õ ÀÐÀ¸¸é ÇÁ·Î±×·¥ ¸À°¡ÁÒ... [ CnUnix ] in KIDS ±Û ¾´ ÀÌ(By): Tony (Ôôà¹úõÖØ) ³¯ Â¥ (Date): 2002³â 9¿ù 9ÀÏ ¿ù¿äÀÏ ¿ÀÈÄ 04½Ã 59ºÐ 47ÃÊ Á¦ ¸ñ(Title): Re: [Q] thread¿Í volatile gcc¿¡¼­´Â volatileÀÌ º¯¼ö¿¡ ºÙÀ¸¸é ·¹Áö½ºÅͺ¯¼ö·Î ÀâÁö ¾Ê°í ¸Þ¸ð¸®º¯¼ö·Î Àâµµ·Ï ÁöÁ¤Çϴ°ɷΠ¾Ë°íÀÖ½À´Ï´Ù. ÇÔ¼ö¿¡ ºÙÀ¸¸é ¿ÉƼ¸¶ÀÌÁ Æ÷±âÇÏ´Â °Å±¸¿ä.. [ CnUnix ] in KIDS ±Û ¾´ ÀÌ(By): terzeron (microkid) ³¯ Â¥ (Date): 2002³â 9¿ù 9ÀÏ ¿ù¿äÀÏ ¿ÀÈÄ 06½Ã 17ºÐ 31ÃÊ Á¦ ¸ñ(Title): Re: [Q] thread¿Í volatile ¿ø·¡ volatileÀº "·¹Áö½ºÅ͸¦ ¹ÏÁö ¸»°í ¸Þ¸ð¸®¿¡¼­ ´Ù½Ã Àоî¿À¶ó"´Â ¶æÀ» °¡Áø modifierÀÔ´Ï´Ù. ANSI CÀÇ ±Ç°í¾Èµµ ±×·¯ÇÏ°í GCCµµ ±×´ë·Î ±¸ÇöÀ» Çß½À´Ï´Ù. ÁÖ·Î longjmp¿¡ ÀÇÇؼ­ context°¡ ¹Ù²î¾ú´Ù°¡ roll-backµÉ ¶§, ·¹Áö½ºÅÍ¿¡ ÀÖ´Â °ªµéÀÌ ¹Ù²î´Âµ¥ GCC°¡ ±×°ÍÀ» ¿¹ÃøÇÏÁö ¸øÇÏ°í ·¹Áö½ºÅÍ¿¡ ÀÖ´Â ¾²·¹±â°ªÀ» ±×´ë·Î ÀÌ¿ëÇÏ°Ô µÇ´Â ¹®Á¦Á¡À» ¸·±â À§Çؼ­ »ç¿ëµÇ´Â °ÍÀÌÁÒ. multi-threaded program¿¡¼­´Â volatile modifierÀÇ »ç¿ëÀÌ ÇÊ¿äÇÒ ¼öµµ ÀÖ½À´Ï´Ù. ¾î¶² º¯¼ö¿¡ ¿©·¯ ¾²·¹µå°¡ µ¿½Ã¿¡ writeÇÏ·Á°í Çϴµ¥, mutual exclusion¿¡ ÀÇÇØ ¸¸µé¾îÁø critical section ³»ºÎ°¡ ¾Æ´Ï¶ó¸é ÀÌ º¯¼ö´Â volatileÀ» ÀÌ¿ëÇÏ¿© '´Ù½Ã' Àо ÇÊ¿ä°¡ »ý±â°Ô µË´Ï´Ù. ÀÌ·± °æ¿ì »ç¿ëÇؾ߰ÚÁÒ. (¹°·Ð critical section¿¡¼­ °øÀ¯µÇ´Â º¯¼ö¶ó¸é ´Ü 1°³ÀÇ thread¸¸ÀÌ »ç¿ëÇϱ⠶§¹®¿¡ ±»ÀÌ volatileÀ» ¾µ ÇÊ¿ä°¡ ¾ø½À´Ï´Ù.) volatileÀ» ¾µ °ÍÀÌ³Ä ¾Æ´Ï¸é mutual exclusionÀ» ÀÌ¿ëÇÒ °ÍÀÌ³Ä ÇÊ¿ä¿¡ µû¶ó µÎ °¡Áö ÁßÀÇ Çϳª¸¦ ¼±ÅÃÇØ¾ß ÇÕ´Ï´Ù.