³×ÀÓµå Ä¿³Î ¿ÀºêÁ§Æ®¸¦ »ç¿ëÇÑ Áߺ¹ ½ÇÇà ¹æÁö¹ý.

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++ÀÇ ÃʱâÈ­ ¸®½ºÆ®¸¦ »ç¿ëÇØ¼­ ÃʱâÈ­ ÇØ¾ß ÇÑ´Ù.