º»¹®/³»¿ë
1. ¾Ë°í¸®Áò ¼³¸í
»óÁ¡¿¡ µé¾î¿Â °í°´µéÀº ´ë±â¹øÈ£¸¦ Çϳª¾¿ ¹Þ´Â´Ù. °¡Àå ³·Àº ´ë±â¹øÈ£¸¦ °®°í ÀÖ´Â °í°´ÀÌ ´ÙÀ½¹ø¿¡ »§À» »ì ¼ö ÀÖ´Ù.
ºÒÇàÇϰԵµ º£ÀÌÄ¿¸® ¾Ë°í¸®ÁòÀº µÎ°³ÀÇ ÇÁ·Î¼¼½º°¡ ¶È°°Àº ¹øÈ£¸¦ ¹ÞÁö ¾ÊÀ» °ÍÀ̶õ °É º¸ÀåÇÏÁö ¸øÇÑ´Ù.(µÎ°³ÀÇ ÇÁ·Î¼¼½º°¡ °°Àº ¹øÈ£¸¦ ¹ÞÀ» ¼ö ÀÖ´Ù.) ÀÌ °æ¿ì ³·Àº À̸§À» °®°í ÀÖ´Â ÇÁ·Î¼¼½º°¡ ¸ÕÀú 󸮵ȴÙ. Áï ´ë±â¹øÈ£´Â °°À»Áö¶óµµ ÇÁ·Î¼¼½º id°¡ ´õ ³·Àº ÇÁ·Î¼¼½º°¡ ¸ÕÀú »ý¼ºµÈ °Å¶ó°í ¸»ÇÒ ¼ö Àֱ⿡ ¸ÕÀú 󸮵Ǵ °ÍÀÌ´Ù. ÇÁ·Î¼¼½º id´Â À¯´ÏÅ©Çϸç ÀüüÀûÀ¸·Î ¼ø¼¸¦ ÀÌ·é´Ù.
boolean choosing[]
int number[]
CS¿¡ ÁøÀÔÇϰíÀÚ ÇÏ´Â ÇÁ·Î¼¼½º´Â ÀÚ±â choosingÀ» true·Î ¼¼ÆÃÇϰí ÀÚ±â number¸¦ ´Ù¸¥ ÇÁ·Î¼¼½ºµéÀÌ °®°í ÀÖ´Â number°ª Áß¿¡¼ °¡Àå Å« °ª¿¡ 1 ´õÇÑ °ªÀ¸·Î ¼¼ÆÃÇÑ´Ù. ±×¸®°í ´Ù½Ã choosingÀ» false·Î ÀüȯÇÑ´Ù.(choosingÀº ´ë±â¹øÈ£ number¸¦ ºÎ¿©¹Þ´Â ÁßÀÓÀ» ´Ù¸¥ ÇÁ·Î¼¼½º¿¡°Ô ¾Ë¸®´Â ¿ªÇÒÀ» ÇÑ´Ù.) ±×¸®°í ÀÏÀÏÀÌ ´Ù¸¥ ÇÁ·Î¼¼½ºµéÀ» Á¶»çÇÏ¸é¼ ´ë±âÇϴµ¥, ¸ðµç ÇÁ·Î¼¼½ºÀÇ choosingÀÌ false°¡ µÉ ¶§±îÁö(´Ù¸¥ ÇÁ·Î¼¼½ºµéÀÌ ÀÚ±âÀÇ ´ë±â¹øÈ£¸¦ ¹ÞÀ» ¶§±îÁö ´ë¡¦(»ý·«)
2. ¾Ë°í¸®Áò Áõ¸í
1) »óÈ£ ¹èÁ¦(Mutual exclusion) : ÇÑ ÇÁ·Î¼¼½º°¡ ÀÚ½ÅÀÇ ÀӰ豸¿ª¿¡¼ ¼öÇà ÁßÀ̸é, ´Ù¸¥ ÇÁ·Î¼¼½ºµéÀº ÀÚ½ÅÀÇ ÀӰ豸¿ª¿¡ µé¾î°¥ ¼ö ¾ø´Ù.
2) ÁøÇà(Progress) : ÀӰ豸¿ª¿¡¼ ½ÇÇàµÇ´Â ÇÁ·Î¼¼½º°¡ ¾ø´Â »óÅ¿¡¼ ÀӰ豸¿ªÀ¸·Î ÁøÀÔÇÏ·Á°í ÇÏ´Â ÇÁ·Î¼¼½ºµéÀÌ ÀÖ´Ù¸é, ÀÜ·ù±¸¿ª¿¡¼ ½ÇÇàµÇÁö ¾Ê°í ÀÖ´Â ÇÁ·Î¼¼½ºµé¸¸ ´ÙÀ½¿¡ ÀӰ豸¿ªÀ¸·Î ÁøÀÔÇÒ ¼ö ÀÖ´Â ´ë»óÀÌ µÇ¸ç, ÀÌ ±¸¿ªÀº ¹«ÇÑÇÏ°Ô ¿¬±âÇÒ ¼ö ¾ø´Ù.