³×ÀÓµå Ä¿³Î ¿ÀºêÁ§Æ®¸¦ »ç¿ëÇÑ Áߺ¹ ½ÇÇà ¹æÁö¹ý.
2006-07-23 ½Å¿µÁø
1. Introduction
À©µµ¿ì»ó¿¡¼ ±¸µ¿µÇ´Â ƯÁ¤ ¾ÖÇø®ÄÉÀ̼ǵéÀÇ °æ¿ì Áߺ¹ ½ÇÇàÀÌ ¹æÁöµÇ¾î¾ß ÇÑ´Ù. ´ëÇ¥ÀûÀ¸·Î MSN ¸Þ½ÅÀúµîÀ» µé ¼ö ÀÖ´Ù. ¸Þ½ÅÀúÀÇ °æ¿ì Áߺ¹Çؼ ½ÇÇàµÉ Çʿ䰡 ¾ø´Ù. ÀÌ·¸°Ô Çѹø¸¸ ½ÇÇàµÇ¾î¾ß ÇÏ´Â ÇÁ·Î±×·¥ÀÇ °æ¿ì ¾î¶»°Ô ±¸ÇöÇÒ ¼ö ÀÖÀ»±î? À©µµ¿ì ÇÚµéÀ» ã´Â ¹æ¹ý, Ä¿³Î ¿ÀºêÁ§Æ®¸¦ »ç¿ëÇÏ´Â ¹æ¹ý, °øÀ¯ ¼¼±×¸ÕÆ®¸¦ »ç¿ëÇÏ´Â ¹æ¹ý µîÀÌ ÀÖ´Ù. ¿©±â¼ ¿ì¸®°¡ ±¸ÇöÇÒ ¹æ¹ýÀº ±× Áß¿¡¼µµ Ä¿³Î ¿ÀºêÁ§Æ®¸¦ »ç¿ëÇÑ ¹æ¹ýÀÌ´Ù.
2. Single Instance
Ä¿³Î ¿ÀºêÁ§Æ®¸¦ »ç¿ëÇØ¼ ¾î¶»°Ô Áߺ¹ ½ÇÇàÀ» ¹æÁöÇÒ ¼ö ÀÖÀ»±î? ¿ø¸®´Â ³×ÀÓµå(Named) Ä¿³Î ¿ÀºêÁ§Æ®ÀÇ °æ¿ì ÇÁ·Î¼¼½º »çÀÌ¿¡ °øÀ¯ µÈ´Ù´Â Á¡ ÀÌ´Ù. ÀÌ Á¡À» ÀÌ¿ëÇÏ¸é ´ÙÀ½°ú °°Àº ½Ã³ª¸®¿À¸¦ »ý°¢ÇÒ ¼ö ÀÖ´Ù. ÇÁ·Î±×·¥ ½ÃÀ۽ÿ¡ ³×ÀÓµå Ä¿³Î ¿ÀºêÁ§Æ®¸¦ »ý¼ºÇÑ´Ù. ±×¸®°í ÇÁ·Î±×·¥ÀÌ Á¾·áÇÒ ¶§ ÇØ´ç ¿ÀºêÁ§Æ®¸¦ ´Ý´Â´Ù. ÀÌ·¸°Ô µÇ¸é ÇѹøÀÌ¶óµµ ÇØ´ç ÇÁ·Î±×·¥ÀÌ ½ÇÇàµÇ¾î ÀÖÀ¸¸é ±× ¿ÀºêÁ§Æ®°¡ »ý¼ºµÇ¾î ÀÖ´Â ¼ÀÀÌ µÈ´Ù. ¸¸¾à¿¡ µÎ ¹øÂ° ÇÁ·Î±×·¥ÀÌ ½ÇÇàµÈ °æ¿ì¿¡ ¶Ç Ä¿³Î ¿ÀºêÁ§Æ®¸¦ »ý¼ºÇÏ·Á°í Çϸé Ä¿³Î¿¡¼´Â ÀÌ¹Ì ¿·¯Áø ¿ÀºêÁ§Æ® ÇÚµéÀ» ³Ñ°ÜÁÖ¸é¼ ÇØ´ç ¿ÀºêÁ§Æ®ÀÇ ·¹ÆÛ·±½º Ä«¿îÆ®¸¦ 1Áõ°¡ ½ÃŲ´Ù. ±×¸®°í ³¡À¸·Î GetLastError°ªÀ¸·Î ERROR_ALREADY_EXISTS¸¦ ¼³Á¤ÇÑ´Ù. µû¶ó¼ °£´ÜÈ÷ ¿ì¸®´Â Ä¿³Î ¿ÀºêÁ§Æ® »ý¼ºÈÄ GetLastError¸¦ Á¶»çÇØ¼ ERROR_ALREADY_EXISTS¸é ÀÌ¹Ì ÇÁ·Î±×·¥ÀÌ Çѹø ÀÌ»ó ½ÇÇàµÇ¾ú´Ù°í °£ÁÖÇÒ ¼ö ÀÖ´Ù.
¾Æ·¡´Â ÀÌ·¯ÇÑ ºÎ¼öÀûÀÎ ÀÛ¾÷µéÀ» Çѹø¿¡ ó¸®ÇØÁִ Ŭ·¡½ºÀÇ ¼Ò½º´Ù. ÇØ´ç Ŭ·¡½º¸¦ Àü¿ª ³»Áö´Â, ÇÁ·Î±×·¥ÀÇ Á¸¼Ó ±â°£µ¿¾È »ì¾ÆÀִ Ŭ·¡½ºÀÇ
¸â¹ö º¯¼ö·Î ¸¸µçÈÄ¿¡ IsExistÇÔ¼ö¸¦ È£ÃâÇØ¼ Á¶»çÇÏ¸é µÈ´Ù. ¸¸¾à ÇØ´ç °ªÀÌ TRUE¸¦ ¸®ÅÏÇÑ´Ù¸é ÇÁ·Î±×·¥À» ¹Ù·Î Á¾·á½ÃŰ¸é µÈ´Ù.
¡¡
3. How to use it?
±×·³ ½ÇÁ¦·Î MFC ÇÁ·Î±×·¥¿¡¼ Çѹø »ç¿ëÇØ º¸ÀÚ. ÀÏ´Ü À§ Ŭ·¡½º ¼Ò½º¸¦ Àû´çÇÑ À§Ä¡¿¡ º¹»çÇÑ´Ù. ±×¸®°í app Ŭ·¡½ºÀÇ ¸â¹ö º¯¼ö·Î ¾Æ·¡¿Í °°ÀÌ ¼±¾ðÇÑ´Ù.
±× ´ÙÀ½Àº app Ŭ·¡½ºÀÇ InitInstance Á¦ÀÏ ¾Õ¿¡ ¾Æ·¡¿Í °°ÀÌ Ãß°¡Çغ¸ÀÚ.
±×¸®°í ÇÁ·Î±×·¥À» ½ÇÇàÇØº¸¸é µÎ¹øÀÌ»óÀº ½ÇÇàÀÌ µÇÁö ¾Ê´Â °ÍÀ» È®ÀÎÇÒ ¼ö ÀÖ´Ù. ÁÖÀÇÇØ¾ß ÇÒ Á¡Àº À§ Ŭ·¡½ºÀÇ ¹ÂÅØ½º À̸§Àº Ŭ·¡½ºÀÇ »ý¼ºÀÚ·Î Àü´ÞµÈ´Ù´Â °ÍÀÌ´Ù. µû¶ó¼ ¹ÂÅØ½º À̸§À» ÁöÁ¤ÇÏ°í ½ÍÀº °æ¿ì¿¡´Â C++ÀÇ ÃʱâÈ ¸®½ºÆ®¸¦ »ç¿ëÇØ¼ ÃʱâÈ ÇØ¾ß ÇÑ´Ù.