Ã¥¼Ò°³
ÀÌ Ã¥Àº µ¿±â¡¤ºñµ¿±â ÀÔÃâ·Â °üÁ¡¿¡¼ À©µµ¿ì ½Ã½ºÅÛ ÇÁ·Î±×·¡¹ÖÀ» ÇÏ´Â ¹æ¹ýÀ» ´Ù·é´Ù. Å©°Ô 1ºÎ¿Í 2ºÎ·Î ³ª´©¾î 1ºÎ¿¡¼´Â µ¿±âÈ °´Ã¼¿Í °ü·Ã ÇÔ¼ö, ½º·¹µå¸¦ ÅëÇØ ½º·¹µå µ¿±âȸ¦ ±¸ÇöÇÏ´Â ´Ù¾çÇÑ ¹æ¹ýÀ» ´Ù·é´Ù. 2ºÎ¿¡¼´Â OVERLAPPED ±¸Á¶Ã¼¸¦ ÀÌ¿ëÇÑ ºñµ¿±â ¶Ç´Â Áßø ÀÔÃâ·Â, ±×¸®°í ÀÌ¿Í °ü·ÃµÈ IOCP, ºñµ¿±â ¼ÒÄÏ, ¾²·¹µå Ç®¿¡ ´ëÇÏ¿© ¼³¸íÇÏ°í IPC¿¡ È°¿ëÇÏ´Â ¹æ¹ýÀ» ´Ù·é´Ù. ½Ç¹«¿¡ À¯¿ëÇÑ ÇÔ¼ö 230¿© °³¿Í »ùÇà ÄÚµå 224°³¸¦ Á¦½ÃÇÏ°í ÀÖ¾î À©µµ¿ì °³¹ßÀÚ¶ó¸é ´©±¸³ª ¼ÒÀåÇØ¾ß ÇÏ´Â ÃÖ°íÀÇ ½ÇÀü ¹ÙÀ̺íÀÌ´Ù. ¡®ÇѺû¹Ìµð¾î IT EXPERT ½Ã¸®Á ù ¹ø° ¸®´º¾ó µµ¼ÀÎ ¡ºÀ©µµ¿ì ½Ã½ºÅÛ ÇÁ·Î±×·¥À» ±¸ÇöÇÏ´Â ±â¼ú¡»Àº ¿©·¯ºÐÀ» À©µµ¿ì ½Ã½ºÅÛ ÇÁ·Î±×·¡¹Ö Àü¹®°¡·Î À̲ø¾î ÁÙ °ÍÀÌ´Ù.
¸ñÂ÷
[1ºÎ] µ¿±âÈ
01Àå ½º·¹µå¿Í µ¿±âÈ
_1.1 µ¿±âȸ¦ À§ÇÑ »çÀü Áö½Ä
__1.1.1 ÇÁ·Î¼¼½º
__1.1.2 Ä¿³Î °´Ã¼¿Í ÇÚµé Å×À̺í
__1.1.3 ½º·¹µå
__1.1.4 ½º·¹µå ½ºÄÉÁÙ¸µ
_1.2 ½º·¹µå µ¿±âȶõ?
__1.2.1 µ¿±âÈÀÇ Çʿ伺
__1.2.2 µ¿±âÈÀÇ ¸ñÀû°ú ¹æ¹ý
02Àå Ä¿³Î °´Ã¼¿Í µ¿±âÈ
_2.1 ½º·¹µå µ¿±âÈ API
__2.1.1 ½º·¹µå ´ë±â ÇÔ¼ö
__2.1.2 ´ë±â ÇÔ¼ö¿Í Ä¿³Î °´Ã¼
_2.2 µ¥ÀÌÅÍ º¸È£¸¦ À§ÇÑ µ¿±âÈ °´Ã¼
__2.2.1 ¹ÂÅؽº(Mutex)
__2.2.2 ¼¼¸¶Æ÷¾î(Semaphore)
_2.3 È帧 Á¦¾î¸¦ À§ÇÑ µ¿±âÈ °´Ã¼
__2.3.1 À̺¥Æ®(Event)
__2.3.2 ´ë±â°¡´É ŸÀ̸Ó(Waitable Timer)
_2.4 ÅëÁö¸¦ À§ÇÑ Ãß°¡»çÇ× °íÂû
__2.4.1 ½º·¹µå ¸Þ½ÃÁö Å¥¿ÍÀÇ ¿¬µ¿
__2.4.2 Äݹé ÇÔ¼ö¿ÍÀÇ °áÇÕ
__2.4.3 .NET BackgroundWorker Ŭ·¡½ºÀÇ ±¸Çö
03Àå À¯Àú ¸ðµå µ¿±âÈ
_3.1 À¯Àú ¿µ¿ªÀÇ µ¿±âÈ °´Ã¼
__3.1.1 Å©¸®Æ¼Äà ¼½¼Ç(Critical Section)
__3.1.2 SRW-¶ô(Slim Reader-Writer Lock)
__3.1.3 Á¶°Ç º¯¼ö(Condition Variables)
_3.2 »óÈ£Àá±Ý(Interlocked) API
__3.2.1 »óÈ£Àá±Ý ÇÔ¼öÀÇ »ç¿ë ¿¹
__3.2.2 »óÈ£Àá±ÝÀ» ÀÌ¿ëÇÑ ½ºÇɶô ±¸Çö
_3.3 »õ·Î¿î µ¿±âÈ ¼ö´Ü
__3.3.1 µ¿±âÈ À庮(Synchronization Barrier)
__3.3.2 ÁÖ¼Ú°ª¿¡ ´ëÇÑ ´ë±â
__3.3.3 ¿ø-ŸÀÓ ÃʱâÈ(One-Time Initialization)
[2ºÎ] ºñµ¿±â ÀÔÃâ·Â
04Àå ÆÄÀÏ, ºñµ¿±â ÀÔÃâ·Â°ú IOCP
_4.1 ÆÄÀÏ Ä¿³Î °´Ã¼
__4.1.1 ÆÄÀÏ »ý¼º ¹× ÀÔÃâ·Â
__4.1.2 ÆÄÀÏ¿¡ ´ëÇÑ ÀÛ¾÷
__4.1.3 CreateFileÀ» ÅëÇÑ ´Ù¸¥ ÀåÄ¡ ¿±â
__4.1.4 µ¿±âÀû ÀÔÃâ·ÂÀÇ Ãë¼Ò
_4.2 ºñµ¿±â ÀÔÃâ·ÂÀÇ ±âº»
__4.2.1 ºñµ¿±â ÀÔÃâ·ÂÀ» À§ÇÑ »çÀü Áö½Ä
__4.2.2 ÀåÄ¡ ¶Ç´Â À̺¥Æ® ½Ã±×³Î¸µ
_4.3 °æº¸°¡´É ÀÔÃâ·Â(Alertable I/O)°ú APC
__4.3.1 ºñµ¿±â ÇÁ·Î½ÃÀú È£Ãâ(APC)
__4.3.2 °æº¸°¡´É ÀÔÃâ·ÂÀÇ »ç¿ë
__4.3.3 ÀÔÃâ·Â°ú »ó°ü¾ø´Â APCÀÇ »ç¿ë
_4.4 ÀÔÃâ·Â ¿Ï·á Æ÷Æ®(IOCP)
__4.4.1 IOCPÀÇ »ý¼º
__4.4.2 ½º·¹µå Ç® ±¸¼ºÇϱâ
__4.4.3 ÀÔÃâ·Â°ú »ó°ü¾ø´Â IOCPÀÇ »ç¿ë
__4.4.4 IOCP ³»ºÎ µé¿©´Ùº¸±â
__4.4.5 IOCP È®Àå ÇÔ¼ö
_4.5 ºñµ¿±â ÀÔÃâ·ÂÀÇ Ãë¼Ò
__4.5.1 ÇÚµé ´Ý±â
__4.5.2 Ãë¼Ò ÇÔ¼ö
05Àå ºñµ¿±â ¼ÒÄÏ
_5.1 ¼ÒÄÏ APIÀÇ ±âº»
__5.1.1 µ¿±â ¸ðµ¨ÀÇ C/S
__5.1.2 µ¿±â ÇÔ¼öÀÇ ºñµ¿±âÈ
_5.2 ºñµ¿±â ¼ÒÄÏ
__5.2.1 °íÀüÀû ¹æ½Ä(select)
__5.2.2 À©µµ¿ì ¸Þ½ÃÁö(WSAAsyncSelect)
__5.2.3 À̺¥Æ® ½Ã±×³Î¸µ(WSAEventSelect)
_5.3 ºñµ¿±â ÀÔÃâ·Â ÀÌ¿ë
__5.3.1 ÀåÄ¡ ¶Ç´Â À̺¥Æ® ½Ã±×³Î¸µ
__5.3.2 °æº¸°¡´É ÀÔÃâ·ÂÀÇ »ç¿ë
__5.3.3 IOCPÀÇ »ç¿ë
_5.4 MS ¼ÒÄÏ È®Àå API
__5.4.1 È®À强À» À§ÇÑ Áغñ
__5.4.2 ºñµ¿±â ÀÔÃâ·Â Á¢¼Ó
__5.4.3 AcceptEx ÇÔ¼ö¿Í ¼ÒÄÏ Ç®
__5.4.4 ÆÄÀÏ Àü¼Û
06Àå ½º·¹µå Ç®
_6.1 ½º·¹µå Ç®ÀÇ ÀÇ¹Ì¿Í ±¸Çö
_6.2 À©µµ¿ì 2000ÀÇ ½º·¹µå Ç®
__6.2.1 ÀÛ¾÷(QueueUserWorkItem)
__6.2.2 ´ë±â(RegisterWaitForSingleObject)
__6.2.3 ŸÀ̸Ó(CreateTimerQueueTimer)
__6.2.4 ÀÔÃâ·Â(BindIoCompletionCallback)
_6.3 »õ·Î¿î ½º·¹µå Ç® I
__6.3.1 ÀÛ¾÷ Ç׸ñ °´Ã¼¿Í ½º·¹µå Ç®
__6.3.2 ÀÛ¾÷(TP_WORK) °´Ã¼
__6.3.3 ´ë±â(TP_WAIT) °´Ã¼
__6.3.4 ŸÀ̸Ó(TP_TIMER) °´Ã¼
__6.3.5 ÀÔÃâ·Â(TP_IO) °´Ã¼
__6.3.6 Äݹé ÀνºÅϽº »ç¿ëÇϱâ
_6.4 »õ·Î¿î ½º·¹µå Ç® II
__6.4.1 ½º·¹µå Ç® °´Ã¼
__6.4.2 Äݹé ȯ°æ °´Ã¼
__6.4.3 Á¤¸®±×·ì °´Ã¼
07Àå IPC¿Í ºñµ¿±â ÀÔÃâ·Â
_7.1 IPC¸¦ À§ÇÑ Áغñ ÀÛ¾÷
__7.1.1 ÇÁ·Î¼¼½ºÀÇ »ý¼º
__7.1.2 Ä¿³Î °´Ã¼ÀÇ °øÀ¯
__7.1.3 ÇÁ·Î¼¼½º °£ µ¥ÀÌÅÍ °øÀ¯
_7.2 ¼ºñ½º¿Í Ä¿³Î °´Ã¼ º¸¾È
__7.2.1 À©µµ¿ì ¼ºñ½ºÀÇ ±âº»
__7.2.2 ¼ºñ½º¿Í Á¢±Ù Á¦¾î
__7.2.3 ¼ºñ½º¿¡¼ÀÇ ÇÁ·Î¼¼½º »ý¼º
_7.3 ¸Þ¸ð¸® ¸ÅÇÎ ÆÄÀÏ
__7.3.1 MMFÀÇ ÀÇ¹Ì¿Í »ç¿ë
__7.3.2 °øÀ¯ ¸Þ¸ð¸®
__7.3.3 ¼ºñ½º¿¡¼ÀÇ MMF »ç¿ë
_7.4 ÆÄÀÌÇÁ
__7.4.1 ÆÄÀÌÇÁ ¼Ò°³
__7.4.2 ÆÄÀÌÇÁÀÇ »ç¿ë
__7.4.3 ¼ºñ½º¿¡¼ÀÇ ÆÄÀÌÇÁ »ç¿ë