Áö±Ý °£´ÜÇÑ ½Ã½ºÅÛ Á¤Áö ÇÁ·Î±×·¥À» Â¥°í ÀÖ±¸¿ä....
´ëÃæÀÇ ¼Ò½º´Â ´ÙÀ½°ú °°¾Æ¿ä.....


unsigned _stdcall thread(void *arg)
{

while(1)
{

}

return 0;


int main()
{
int i;

for(i=0;i<3000;i++)
{
_beginthreadex(NULL, 0, thread, 0,0, NULL);
}

getch(); 
return 0;

}

¹°·Ð setting¿¡¼­ debug multithread´Â ÇØÁÖ¾ú±¸¿ä....
±Ùµ¥ ¿¡·¯´Â ¾ø´Âµ¥...½Ã½ºÅÛÀÌ ¸ØÃßÁö´Â ¾Ê³×¿ä......

±Ùµ¥..._beginthread()¸¦ ¾²¸é Àß µÇ¿ä...
±×·¯´Ï±î ½Ã½ºÅÛÀÌ Àß ¸ØÃá´Ù´Â ¾ê±âÁö¿ä.....
¿Ö ±×·±°Ç°¡¿ä....
Áö±Ý ÀÌ ¼Ò½º´Â ÇÁ¼¼12¿ùÈ£¿¡ ÀÖ´Â ¼Ò½º°Åµç¿ä..... 
¼­¹ö ÇÁ·Î±×·¥À» ÇÏ´Ù°¡ ¾²·¹µå »çÀÌÀÇ ¶ô¶§¹®¿¡
°í»ý ÇϽô ºÐµéÀÌ °è½Å °Í °°±º¿ä.
Àúµµ ¾²·¹µå¸¦ ¾²Áö ¸»ÀÚ°í ÁÖÀå ÇÏ´Â »ç¶÷ Áß¿¡
ÇÑ »ç¶÷ ÀÌ°í ¶Ç ±×·¸°Ô °³¹ß Çϰí ÀÖ½À´Ï´Ù.
Á¦ »ý°¢¿¡´Â ÇÑ Å¬¶óÀ̾ðÆ®ÀÇ ¿äû¿¡ ±×¸® ¸¹Àº ÇÁ·Î¼¼½Ì
ŸÀÓÀÌ °É¸®Áö ¾Ê´Â´Ù¸éÀº(¸¹Àº ÇÁ·Î¼¼½ÌÀ̳ª, µð½ºÅ© I/O°¡
¸¹´Ù´ø°¡ ÇϸéÀº ¾Ö±â°¡ ´Þ¶ó Áö°ÚÁö¸¸¼­µµ) ±ÂÀÌ ¾î·Æ°Ô ¾²·¹µå¸¦
¾µ Çʿ䰡 ÀÖÀ»°¡¶õ »ý°¢ÀÌ µå³×¿ä..
ÇÏÁö¸¸, ¾²·¹µå¸¦ ¾²½Ã´Â ºÐµéÀº ³ª¸§´ë·Î Ÿ´çÇÑ ÀÌÀ¯°¡ ÀÖ°ÚÁÒ?
¾²·¹µå¸¦ ²À ½á¾ß ÇÏ´Â ÀÌÀ¯°¡ ÀÖ´Ù¸é ÀúÁ» ¾Ë·Á ÁÖ¼¼¿ä..
¾î¼¸é, ±×°Ô Á¤´ä ÀÏ ¼ö°¡ ÀÖÀ¸´Ï±ñ¿ä.. ±×·¯¸é ³­ ÇÁ·Î±×·¥ ´Ù½Ã
Â¥¾ß Çϴµ¥....

Áö±Ý, ÈĹèµé°ú °£´ÜÇÑ ¸Óµå °ÔÀÓ Çü½ÄÀÇ ÇÁ·Î±×·¥ Çϳª Â¥°í ÀÖ½À´Ï´Ù.
¾î¶ư, ÇѴ޾ȿ¡ º£Å¸Å×½ºÆ® ÇÒ ¿¹Á¤ÀÌ´Ï ¸¹ÀÌ Âü¿©ÇØ ÁÖ½Ã¸é °¨»ç 
ÇϰڽÀ´Ï´Ù.
´Ù¸¥ ºÐµé ¸»¾¸À» µé¾îº¸¸éÀº Server°¡ Àß Á×´Â ´Ù´øµ¥ °ÆÁ¤À̳׿ä..
Á¦°¡ ¼­¹ö ´ã´çÀε¥...
Áö±Ý ±îÁö Àâ´ã À̾ú½À´Ï´Ù.

----jadoo 
1. CPU°¡ ³²±â ¶§¹®ÀÌÁÒ.
¸ÖƼ ¾¾ÇÇÀ¯¸¦ °¡Áø ÄÄ¿¡¼­ ½Ì±Û ¾²·¹µå·Î µ¹¸®¸é
¾¾ÇÇÀ¯ ³¶ºñ°¡ µÇ°ÚÁÒ. ¹°·Ð OS°¡ Àß Áö¿øÇØ ÁÖ¾î¾ß
°ÚÁö¸¸¿ä.
2. Çö½Ç°ú ºñ½ÁÇÑ ±¸Á¶·Î Á¢±ÙÇÒ ¼ö ÀÖ½À´Ï´Ù.
Çö½ÇÀº ¿©·¯°¡Áö ÀÏÀÌ º¹ÀâÇÏ°Ô µ¹¾Æ°©´Ï´Ù.
¹°·Ð °ÔÀÓµµ ¸¶Âù°¡ÁöÁÒ. ÀÌ·±°ÍµéÀ» ÇÁ·Î±×·¥È­
Çϱâ À§ÇØ ±¸Á¶¸¦ Àâ´Âµ¥ ¾²·¹µå°¡ ÀÖÀ¸¸é ÇѰ¡Áö´õ
°¡´É¼ºÀÌ »ý±é´Ï´Ù. ¹°·Ð ¸ÖƼ ÇÁ·Î¼¼½º·Î ÇÁ·Î¼¼½º°£ Åë½ÅÀ»
ÇØµµ ºñ½ÁÇÏ°Ô ±¸ÇöµÇÁö¸¸ ´õ º¹ÀâÇϰí ÈûµéÁÒ.
±¹¹ÎÇб³¶§ °Ö·¯±× ºñ½ÁÇÑ ¿À¶ôÀ» º£ÀÌÁ÷À¸·Î 8bitÄÄÀ¸·Î Â¥º¸·Á
ÇÏ´ø ±â¾ïÀÌ »ý°¢ ³ª³×¿ä. Á¦ ºñÇà±â°¡ ¿òÁ÷À϶§ Àû±â°¡
¾È¿òÁ÷¿´°Åµç¿ä -_-; ÇÑÂü Áö³ª¼­¾ß ±×¹®Á¦¿¡ ´ëÇÑ ÇØ°áÃ¥À» ã¾Ò´ø°Å °°±¸¿ä.
±Ùµ¥ ¾²·¹µå¸¦ ¾´´Ù¸é ´õ ½±°Ô ±¸Á¶¸¦ ÀâÀ» ¼ö°¡ ÀÖ½À´Ï´Ù.
ÇѰ¡Áö °¡´É¼ºÀÌ ´õ »ý±ä´Ù´Â °ÅÁÒ. ºÎÇÏ ÇѸíÀ» Á׳뵿À» ½Ãų¼öµµ ÀÖÁö¸¸
¿©·¯¸íÀÌ Çùµ¿Çؼ­ ÀÏÀ» ÇÏ°Ô ÇÑ´Ù°í³ª ÇÒ±î¿ä.
¹°·Ð ¾²´Âµ¥´Â Á» ±î´Ù·ÓÁö¸¸ Çùµ¿Çؼ­ ÇÏ´Â ¸¸Å­ ÀÛ¾÷ÀÌ ´Ü¼øÇØ Áý´Ï´Ù.
¶ÇÇÑ ¾î¶² ºÎºÐÀÌ ´õ Èûµé¸é ±×ºÎºÐ¿¡ ºÎÇϵéÀ» ´õ ÅõÀÔÇÏ¸é µÇ°ÚÁÒ?
¸¶Âù°¡Áö·Î ÇØ´çÀÏÀ» ÇÏ´Â ¾²·¹µåÀÇ °¹¼ö¸¦ ´Ã·ÁÁÖ¸é ¾¾ÇÇÀ¯°¡ Çã¿ëÇÏ´Â
¸¸Å­ È¿À²ÀÌ ´Ã¾î³ª°ÔµË´Ï´Ù. ¿¹¸¦µé¸é À¯ÀúÀÇ ÆÐŶÀ» ¾²·¹µå·Î ó¸®ÇÑ´Ù¸é
±×ºÎºÐ¿¡¼­ ÀÚ²Ù º´¸ñÀÌ »ý±ä´Ù¸é ±×ÂÊ ¾²·¹µåÀÇ ¼ö¸¦ ´Ã·ÁÁÖ¸é µË´Ï´Ù.
¹°·Ð ÀÌ·¸°Ô ÇØ¼­ ÇØ°áÀÌ ¾ÈµÇ´Â °æ¿ìµµ ÀÖ½À´Ï´Ù. ±×¶© ±â°è¸¦ °¥¾Æ¾ß°ÚÁÒ ^^;

´ÜÁ¡À» µç´Ù¸é
1. °øÀ¯ ÀÚ¿ø¿¡ ´ëÇÑ °ü¸®°¡ ÇÊ¿äÇÕ´Ï´Ù.
¾²·¹µå°£¿¡ °øÀ¯ÇÏ´Â ÀÚ¿ø¿¡ ´ëÇØ °ü¸®°¡ ÇÊ¿äÇÕ´Ï´Ù. À̺κÐÀÌ ¸¹Àº ¾î·Á¿òÀ»
³º´Â ºÎºÐÀÌ°í ¹ö±×ÀÇ ¿Â»óÀÔ´Ï´Ù. ±Ùµ¥ ÀÚ²Ù ¾²°í ´çÇÏ´Ù º¸¸é Àͼ÷ÇØ Áý´Ï´Ù.

2. ¾²·¹µå ÀÚüµµ ÇѰ谡 ÀÖ½À´Ï´Ù.
¾²·¹µå°¡ ¸¸´ÉÀº ¾Æ´Õ´Ï´Ù. ÇÊ¿äÇÒ¶§ ¸¶´Ù ¸·¾²´Ù º¸¸é 
ÇѰ谡 »ý±âÁÒ. ¼ýÀÚ¿¡ ´ëÇÑ ÇѰèÀÔ´Ï´Ù. Ãʱ⿡ À¯Àú°¡ µé¾î¿À´Â ¸¸Å­ ¾²·¹µå¸¦
¸¸µé¾îµµ µÇÁö ¾Ê°Ú´Â³Ä´Â ¸¶À½À» °¡Á³´Ù°¡ ±× ¸¶À½À» Áö¿ìµµ·Ï ÇѰÍÀÌ ¹Ù·Î
ÀÌ ÀÌÀ¯ ¶§¹®ÀÔ´Ï´Ù.

3. ±¸Á¶°¡ ¾ÊÁÁ°Å³ª ¸¹¾ÆÁö¸é ¿ÀÈ÷·Á ºñÈ¿À²ÀûÀÔ´Ï´Ù..
¾²·¹µåÀÇ ±¸Á¶°¡ ¾ÊÁÁÀ» °æ¿ì ½Ì±Ûº¸´Ù ´õ °É¸°´Ù°í ÇÕ´Ï´Ù.
ÀÌ°Ç µ¥ÀÌÅÍ ¶ôÇϰí Ǫ´Â ½Ã°£¶§¹®ÀÌÁÒ.

°á·ÐÀº ¾²·¹µå¸¦ ¾²µç ¾È¾²µç °Å±â¿¡ ¸Â´Â ±¸Á¶·Î ¼³°è°¡ µÇ¾ß°ÚÁÒ.
¹°·Ð ¸»Àº ½±½À´Ï´Ù ÇÏÇÏÇÏÇÏ. ^^;
±¸ÇöÀ» ½ÇÁ¦·ÎÇØº¸¸é ¾î·Á¿òµµ ¸¹°í ¸·È÷´Â ºÎºÐµµ ¸¹Áö¸¸
¿©·¯°¡Áö Àç¹ÌÀÖ´Â Á¡ÀÌ ¸¹½À´Ï´Ù.
ÇÏÁö¸¸ °á±¹ °¡Àå Áß¿äÇÑ°Ç Á¦ ±â´ÉÀÌ Á¦´ë·Î ¾ÈÀüÇÏ°Ô µ¹¾Æ°¡´À³ÄÁÒ..
__
À̰游 
PS.´©±¸ Å×Å©³ë Ãã¹Ù¶÷¿¡ ºüÁø ¸ó½ºÅ͸¦ ÁøÁ¤½ÃŰ´Â ¹æ¹ý ¾Æ½Ã´ÂºÐ?

Á¦°¡ ¾²·¹µå¸¦ ¾²´Â ÀÌÀ¯´Â ´ÙÀ½°ú °°½À´Ï´Ù.

1. ¸®¼Ò½º°¡ ³²´ÂÇÑ °¡´ÉÇÑ µ¿½Ã ¼ö½Å 󸮸¦ ÇÒ ¼ö ÀÖ´Ù.

Ŭ¶óÀÌ¾ðÆ® 1¿¡¼­ ó¸® ½Ã°£ÀÌ Á¦¹ý ±ä ¿äû(¿¹¸¦ µé¾î ·Î±×¿Â)À» ó¸®ÇÏ´Â µ¿¾È,
ÀÌ¹Ì ·Î±×¿ÂÇÑ Å¬¶óÀÌ¾ðÆ® 2¿¡¼­ ó¸® ½Ã°£ÀÌ ÂªÀº ¿äû(¿¹¸¦ µé¾îij¸¯Å͸¦
¿òÁ÷¿´´Ù)À» ó¸®ÇÒ ¶§°¡ ¿Ô´Ù°í °¡Á¤ÇØ º¾½Ã´Ù. ½Ì±Û ½º·¹µå¶ó¸é, ¿ÀÅ丶Ÿ ¹æ½ÄÀ¸
·Î
¼ö½Å 󸮸¦ ±¸ÇöÇÏÁö ¾ÊÀº ÀÌ»ó, Ŭ¶óÀÌ¾ðÆ® 2ÀÇ Ã³¸®´Â Ŭ¶óÀÌ¾ðÆ® 1ÀÇ Ã³¸®°¡ ³¡
³­
´ÙÀ½¿¡¾ß °¡´ÉÇϰÚÁÒ.
ÇÏÁö¸¸, Ŭ¶óÀÌ¾ðÆ® 1ÀÇ ¿äû°ú Ŭ¶óÀÌ¾ðÆ® 2ÀÇ ¿äûÀ» ¼­·Î ´Ù¸¥ ½º·¹µå¿¡¼­
ó¸®ÇÑ´Ù¸é, °øÀ¯ÇØ¾ß ÇÏ´Â ¸®¼Ò½º°¡ ¾ø´Â ÀÌ»ó, µ¿½Ã ¼ö½Å 󸮰¡ °¡´ÉÇϰÚÁÒ.

¿ÀÅ丶Ÿ¸¦ ÀÌ¿ëÇÑ ¼ö½Å 󸮴 ½Ì±Û ½º·¹µå·Îµµ µ¿½Ã ¼ö½Å 󸮿¡ ´Ù¼Ò °¡±õ°Ô Á¢±Ù
¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡¦¡
2. ÇÁ·Î¼¼½Ìº¸´Ù, µð¹ÙÀ̽º Ãâ·Â ´ë±â¸¦ À§ÇÑ ½Ã°£ÀÌ ºñ±³Àû ¸¹À» ¶§ À¯¿ëÇÏ´Ù.

¼ÒÄÏ ¼ö½Å ´ë±â, µ¥ÀÌÅͺ£À̽º Æ®·£Àè¼± ´ë±â, ´Ù¸¥ ºÐ»ê ¼­¹ö ÆÄÆ®ÀÇ Ã³¸® ÀÀ´ä ´ë
±â
µî, ¼­¹öÀÇ ±Ô¸ð°¡ Ä¿Áö¸é, CPU Á¡À¯ ¸»°íµµ, ´ë±â ½Ã°£ÀÌ ±æ¾îÁö´Â °æ¿ì°¡ ¸¹½À´Ï´Ù
.
ƯÈ÷, Á¦ °æÇè»ó, ¸ÖƼ ¼­¹ö¿¡¼­´Â ±×·± ¾ç»óÀÌ ¿©±â Àú±â¼­ »ý±â´Â °Í °°½À´Ï´Ù.
««È÷ ³ë´Â CPU..±×³É ³ÀµÎ±ä ¾Æ±õÁÒ? ÀÌ·² ¶§, ³²´Â CPU ŸÀÓ¿¡ ´Ù¸¥ ½º·¹µå¸¦
ºÙ¿©¼­ ó¸®ÇØ º¸¼¼¿ä.

..ÇÏÁö¸¸, ¿ª½Ã, ÇÁ·Î±×·¥À» ÀÛ¼ºÇÏ´Ù º¸¸é, ½º·¹µå°¡ ÇϳªÀÏ ¶§°¡ ÈξÀ ÆíÇÑ ±¸¼®ÀÌ

¸¹½À´Ï´Ù. ±×·¡¼­, Àúµµ À¢¸¸ÇÏ¸é ½Ì±Û ½º·¹µå·Î 󸮸¦ ÇÕ´Ï´Ù. NPC ¿òÁ÷ÀÓ Ã³¸®,
¿ùµå ÁøÇà µîÀº ±×·¸°Ô Çϰí ÀÖÁÒ. 
½º·¹µå Ç®¸µÀ̶õ, ¿©·¯°³ÀÇ ½º·¹µå¸¦ µ¹¸®´Ù°¡, Ŭ¶óÀÌ¾ðÆ® ¿äû µîÀÌ µé¾î¿À¸é,
'ÀáÀÚ´Â' ½º·¹µå°¡ ÀÖ´ÂÁö ã¾Æº¸°í, ÀÖÀ¸¸é ¾Æ¹«°Å³ª Çϳª ±ú¿ö¼­ ±×°Ô ±× ¿äûÀ»
ó¸®ÇÏ°Ô ¸¸µì´Ï´Ù.

½º·¹µå Ç®¸µÀ» ±¸ÇöÇÏ´Â ¹æ¹ýÀº.. »ç½Ç, "´Ï ¸¾´ë·ç ÇØ¶ó"Áö¸¸, À©µµ¿¡¼­´Â ±×°É
±¸ÇöÇϱâ À§ÇÑ ¸î°¡Áö API¸¦ Á¦°øÇϰí ÀÖÁÒ.

À©µµ95À̻󿡼­´Â, File Overlapped I/O¸¦ ½á¼­ ½º·¹µå Ç®¸µÀ» ¸¸µé ¼ö ÀÖ½À´Ï´Ù..
´ÜÁö, Á» ºÒÆíÇÑ°Ô ÈìÀÌÁö¸¸. ±×·±µ¥, NT¿¡¼­´Â I/O Completion Port¸¦ ½á¼­ Á» ´õ
°£ÆíÇÏ°Ô ½º·¹µå Ç®¸µÀ» ±¸ÇöÇÒ ¼ö ÀÖ°í, Á» ´õ °£ÆíÇÒ °ÍÀ̶ó ÁüÀ۵ǴÂ,
À©µµ2000¿¡¼­ Áö¿øÇϱ⠽ÃÀÛÇÏ´Â QueueUserWorkItemµîÀ» »ç¿ëÇØ¼­ ½º·¹µå Ç®¸µÀ»
¸¸µé ¼öµµ ÀÖ½À´Ï´Ù.

Á¦°¡ ¸¸µç °ÔÀÓ-Cafe9 ¼­¹ö´Â I/O Completion Port¸¦ ÀÌ¿ëÇØ¼­ ½º·¹µå Ç®¸µÀ»
ÇÕ´Ï´Ù. NT¿¡¼­´Â ±×·¡µµ ½º·¹µå Ç®¸µ Å¥´Ù¿î APIÀ̱⿡, ¼±ÅÃÀ» ÇѰÅÁÒ. 
CPU°¹¼ö*2°³¸¸Å­ÀÇ ½º·¹µå Ç®À» ¸¶·ÃÇØ³õ°í ó¸®Çϱ⿡, µà¾ó CPU¸¦ °¡Áø ÄÄÀÇ °æ¿ì

µ¿½Ã ó¸®ÇÒ ¼ö ÀÖ´Â ¿äû °¹¼ö°¡ 4°³ÀÎ ¼ÀÀÌÁÒ.

ÇбԴÔÀÌ ¾ð±ÞÇÑ QueueUserWorkItem API¸¦ ã¾ÆºÃ´Âµ¥, Á» ´õ È®ÀåµÈ ±â´ÉÀÌ
±¦Âú´õ±º¿ä. ÇÏÁö¸¸, ¾ÆÁ÷Àº À©µµ2k°¡ ¸¹Àº ¹ö±×°¡ ÀÖ´Ù°í Çϱ⿡, ´çÀå ¼­ºñ½º¸¦
ÇØ¾ß ÇÏ´Â ¸¶´ç¿¡¼­ ¹ö±×ÀÖ´Â À©µµ2k¸¦ ¾²¸é Å»ÀÌ ¸¹À» °Í °°¾Æ¼­, ±×³É I/O
Completion Port¸¦ ¾²°í ÀÖ½À´Ï´ç.

±×°Ç ±×·¸°í, Á¦ °æÇè»ó ³»¸° °á·ÐÀº,

1-¼­¹ö ¸Ó½®ÀÇ CPU°¡ 4°³ ÀÌ»óÀÌ´Ù.
2-ºÐ»ê 󸮰¡ ¾ÈµÈ´Ù.
3-»ç¿ëÀÚ´ç ó¸® ÀÀ´ä ½Ã°£ÀÌ ±ä °æ¿ì°¡ ¸¹´Ù.
4-¸ÖƼÇÁ·Î¼¼½º º¸È£¸¦ ÇØ¾ß ÇÏ´Â ¸®¼Ò½ºÀÇ ±¸º° ´ÜÀ§°¡ ¸íÈ®ÇÏ´Ù. 
5-CPU ÀÌ¿ÜÀÇ ´Ù¸¥ ÀÚ¿ø, ¿¹¸¦ µé¸é ¿ÜºÎ µ¥ÀÌÅͺ£À̽º³ª À¥ ¼­¹ö µîÀ» ¸¹ÀÌ
»ç¿ëÇÑ´Ù.

°°Àº ÀÌÀ¯°¡ ¾ø´Â ÀÌ»ó, ±»ÀÌ ½º·¹µå¸¦ ¿©·¯ °³ µÎ´Â°Ç ±×´ÙÁö ÁÁÁö ¾Ê´Ù°í º¾´Ï´Ù.

ÇÁ·Î±×·¥µµ º¹ÀâÇØÁö°í, ó¸® ¼º´Éµµ ½Ì±Û½º·¹µå¸¸ ¸øÇÒÅ״ϱî¿ä.

±Ùµ¥, ¿Ö ³ª´Â ½º·¹µå¸¦ ¿©·¯°³ µ¹¸®´À³Ä? ±× ÀÌÀ¯´Â.. À§¿¡ ½á³õÀº ÀÌÀ¯ Áß 3,4,5°¡

ÇØ´çµÇ±â ¶§¹®ÀÌÁÒ. Çæ..

½º·¹µå Ç®¸µ.. õÇϹ«ÀûÀº ¾Æ´Õ´Ï´Ù. "¿ì¸®ÇÑÅÙ ²À ÇÊ¿äÇÑ °ÍÀΰ¡?" ¸¦ ¸ÕÀú °ËÅäÇÑ

´ÙÀ½¿¡ »ç¿ë ¿©ºÎ¸¦ ¼±ÅÃÇϽñ⠹ٶø´Ï´Ù. °Ô´Ù°¡, ½º·¹µå Ç®¸µÀ» ÇÏ´Â ¹æ¹ýµµ ¾Õ¼­
¾ð±ÞÇßÁö¸¸, µðÀÚÀεµ ¿©·¯°¡Áö°í, ½ÉÁö¾î Á¦°øÇÏ´Â APIµµ ¿©·¯°¡ÁöÀÔ´Ï´Ù. °Ô´Ù°¡,

°¢°¢ÀÇ API°¡ ÀÏÀåÀÏ´ÜÀ̱⿡, Ưº°ÇÑ ÃÖ»óÀÇ ¼±Åõµ ¾ø½À´Ï´Ù. ±×·¯´Ï±î, "¿ì¸®ÇÑÅÙ

¾î¶² ¹æ½ÄÀÌ ÇÊ¿äÇѰ¡?"°¡ ´ÙÀ½ °ËÅä »çÇ×À̰ÚÁÒ.

²µ¼­¹ö ÇÁ·Î±×·¡¸Óµé È­ÀÌÆÃ~~

PS. º´Æ¯ Àü¿ª(?) ÀÏÁÖÀϵµ ¾È³²¾Ò¶Ì~~~ 
¾Æ·¡ ±ÛµéÀ» Àо´Ï±î Ŭ¶óÀÌ¾ðÆ® Çϳª´ç ½º·¹µå¸¦ Çϳª¾¿ ÁÖ´Â °Ç

ºñÈ¿À²ÀûÀ̶ó°í µÇ¾î Àֳ׿ä..

±×¸®°í ÁÁÀº ¹æ¹ýÀ¸·Î °¢ ÀÛ¾÷¸¶´Ù ¾²·¹µå¸¦ ÁÖ´Â °ÍÀÌ ÀÖ´Ù°í ÇÏ´Â µ¥¿ä..

±×·³ ÀÌÁ¦ Áú¹®Àä..

¹öŬ¸® ¼ÒÄÏÀ¸·Îµµ ÀÌ°Ô ±¸ÇöÀÌ °¡´É ÇѰ¡¿ä?

À©¼ÓÀ̶ó¸é, non-blockingÀ̴ϱî

Ŭ¶óÀÌ¾ðÆ® ÇÚµé(TCP)¸¶´Ù WSAEventSelect°°Àº °É °É¾îµÎ¸é µÈ °Í °°Àºµ¥¿ä..

Á¦°¡ ±Ã±ÝÇÑ °Ç Berkley¼ÒÄÏ¿¡¼­´Â 
¾î¶»°Ô À̰ÍÀ» ±¸ÇöÇÏÁÒ??

Berkley ¼ÒÄÏÀº recv()°°Àº °æ¿ì blockingµÇ¼­

ÇÁ·ÎÅäÄÝÀÌ ¿ÀµçÁö ¾Æ´Ï¸é ¿¡·¯°¡ ³¯ ¶§±îÁö ±â´Ù·Á¹ö¸®Àݾƿä..

±×·¯¸é ´Ù¸¥ Ŭ¶ó¾ðÆ®¿¡¼­ ¿À´Â ÇÁ·ÎÅäÄÝÀº ´ç¿¬È÷ ¸ø ¹ÞÀ» °Å°í..

Berkley ¼ÒÄÏÀ¸·Î´Â ¾Æ¿¹ ºÒ°¡´É ÇѰ¡¿ä??

±×³É ±Ã±ÝÇØ¼­ Áú¹®µå·Á º¾´Ï´Ù.

¾È³çÇϼ¼¿ä? ÇбÔÀÔ´Ï´Ù.

³ª¸§´ë·Î ÀڷḦ Á» ã¾Æº¸°í ÇØ¼­ ¸ðµ¨À» ¼¼¿öºÃ´Âµ¥, Á¦°¡ Á¦´ë·Î »ý°¢ÇѰÇÁö

¹Ì¸® ¿©·¯ºÐÀÇ Á¶¾ðÀ» Á» ±¸Çغ¼±î ÇØ¼­ ½á º¾´Ï´Ù. À߸øµÈ Á¡À̳ª ´õ °³¼±ÀÇ

¿©Áö¿¡ ´ëÇØ Á¶¾ðÇØÁÖ¼ÌÀ¸¸é °¨»çÇϰڽÀ´Ï´Ù.

ÀÏ´ÜÀº NT ±â¹ÝÀ¸·Î Â¥±â·Î Çß°í, ¸ÖƼ ¾²·¹µù ¸ðµ¨·Î ³ª°¡±â·Î Çß½À´Ï´Ù.

¸ÖƼ¾²·¹µù ¸ðµ¨À» ÅÃÇϱâ·Î ÇÑ ÀÌÀ¯´Â, Â÷ÈÄ¿¡ 2 °³ ÀÌ»óÀÇ CPU ¸¦ ÀåÂøÇÑ

¼­¹ö¸Ó½ÅÀ» »ç¿ëÇÒ °èȹ¶§¹®ÀÔ´Ï´Ù.

ÀÏ´Ü 3 °¡ÁöÀÇ ¾²·¹µå¸¦ µ¹¸± »ý°¢ÀÔ´Ï´Ù. 
ù¹øÂ°´Â Listener ¾²·¹µåÀÔ´Ï´Ù. ¿©±â¼­´Â Listening socket À» ÀÌ¿ëÇØ¼­

¼­¹ö¿¡ Á¢¼ÓÇÏ´Â »ç¿ëÀÚ¿¡ ´ëÇØ Á¢¼Ó¿¡ ´ëÇÑ Å¬·¡½º (CClient) À» ¸¸µé¾î¼­

CClientList ¿¡ µî·Ï½ÃÄÑÁÖ´Â ÀÏÀ» ÇÕ´Ï´Ù.

µÎ¹øÂ°´Â ClientList ¾²·¹µåÀÔ´Ï´Ù. ¿©±â¼­´Â ClientList ¿¡ µî·ÏµÈ Á¢¼Ó

¼ÒÄϸ¶´Ù Recv ¸¦ Overlapped ·Î ½ÇÇàÇØÁÖ´Â ¿ªÇÒÀ» ÇÕ´Ï´Ù. ÇØ´ç ¼ÒÄÏ¿¡¼­

¹«¾ð°¡ µ¥ÀÌŸ°¡ ¿Í¼­ À̺¥Æ®°¡ ¹ß»ýÇϵµ·Ï À¯µµÇÏ´Â ¿ªÇÒÀ» ÇÏ°Ô µË´Ï´Ù

¼¼¹øÂ°´Â ½ÇÁ¦·Î °¢°¢ÀÇ À̺¥Æ®¿¡ ´ëÇØ 󸮸¦ ÇØÁÖ´Â Worker ¾²·¹µåÀÔ´Ï´Ù 
Listener ¿Í ClientList ´Â °¢°¢ 1 °³ÀÇ ¾²·¹µåÀÎ ¹Ý¸é, Worker ´Â n °³ÀÇ

¾²·¹µå°¡ µ¹¾Æ°¡°í ÀÖ°Ô µÇ¾îÀÖ½À´Ï´Ù. óÀ½¿¡´Â ¾²·¹µåÀÇ °¹¼ö¸¦ À¯µ¿Àû

À¸·Î Á¶ÀýÇÏ´Â ¾²·¹µåÇ®¸µÀ» ÇÒ »ý°¢À̾úÁö¸¸, ¾îÂ÷ÇÇ ¸Ó½Åº° ÃÖ´ëÁ¦ÇÑÀοøÀÇ

Å׵θ®¾È¿¡¼­ Â¥´Â°Çµ¥ Á¢¼ÓÀÚ°¡ ÀûÀ»¶§ÀÇ ÆÛÆ÷¸Õ½º¸¦ Áõ°¡½ÃŰ´Â°Ç º° Àǹ̰¡

¾øÁö ¾ÊÀ»±î ÇÏ´Â »ý°¢ÀÌ µé¾î¼­ ¾²·¹µåÀÇ ¼ýÀÚ´Â ¼­¹ö¸¦ ½ÃÀÛ½Ãų¶§¿¡ Á¤ÇϰÔ

Çϵµ·Ï ÇÏ¿´½À´Ï´Ù. ÀÌ Worker ¾²·¹µåµéÀº ´ëºÎºÐ Wait »óÅ¿¡ ÀÖ´Ù°¡ ClientList

¿¡¼­ ½ÇÇàÇÑ Recv °¡ ¿Ï·áµÉ ½ÃÁ¡¿¡ ±ú¾î³ª¼­ ÆÐŶÀ» parsing Çϰí, ÇÊ¿äÇÑ

ÀÛ¾÷À» ÇÑ ´ÙÀ½, °á°ú¸¦ Ŭ¶óÀ̾ðÆ®Ãø¿¡ Send ÇÏ°í ´Ù½Ã Wait »óÅ·Πµ¹¾Æ°¡°Ô 
µË´Ï´Ù.

¾ÆÁ÷ Á¦´ë·Î ±¸ÇöÀ» ÇØº» °ÍÀÌ ¾Æ´Ï°í, ±×³É »ý°¢¸¸À¸·Î Á¤¸®Çغ» °ÍÀ̶ó¼­

Á¦°¡ ¸Â°Ô »ý°¢ÇÑ °ÍÀÎÁö ¾î¶²Áö ¸ð¸£°Ú½À´Ï´Ù. ƯÈ÷ Overlapped I/O ¸¦ »ç¿ëÇØ¼­

°¢°¢ÀÇ Client ¿¡°Ô Recv ¸¦ ½ÃÄѳõ´Â´Ù´Â °³³äÀÌ ¿ÇÀº°ÇÁö Ʋ¸°°ÇÁö ¸ð¸£°Ú±º¿ä

±× ¿Ü¿¡ µ¿±âÈ­ÀÇ ¹®Á¦¶ó´ø°¡ µîµîÀÇ ¹®Á¦°¡ ÀÖÀ»µí Çѵ¥, ÀÌ¿¡ ´ëÇØ ´Ù¸¥ºÐµéÀÇ

ÁöÀûÀ» ºÎʵ叮°Ú½À´Ï´Ù

ÇбÔ
neolith
ÇöÀç win32 network programming À» º¸°í ÀÖ½À´Ï´Ù.

±×·±µ¥ ½º·¹µå µ¿±âÇ϶ó´Â ¸»ÀÌ ³ª¿À´Â ±º¿ä.

"ÇÑ ÇÁ·Î¼¼¼­¿¡ ¼Ò¼ÓµÈ ¸ðµç ½º·¹µå´Â ÇϳªÀÇ ÁÖ¼Ò °ø°£À» °øÀ¯ÇϹǷΠÇÁ·Î¼¼¼­ÀÇ
¸ðµç Á¤Àû µ¥ÀÌÅ͸¦ Á¢±ÙÇÒ ¼ö ÀÖÀ¸¸ç À©µµ¿ì ÇÚµé, GDI °´Ã¼, ÆÄÀÏ ÇÚµé, µ¿±âÈ­

°´Ã¼ µî ÇÁ·Î¼¼¼­°¡ ¼ÒÀ¯ÇÏ´Â ¸ðµç °´Ã¼µµ °øÀ¯ÇÏ°Ô µÈ´Ù. ½º·¹µå³¢¸®´Â ¸Å¿ì ¹ÐÁ¢

ÇÑ °ü°è¸¦ °¡Áö°Ô µÇ¹Ç·Î ¿©·¯ ÇÁ·Î¼¼½º°¡ »ç¿ëÇÏ´Â µ¥ÀÌÅÍ ¾ÆÀÌÅÛÀ̳ª °´Ã¼¿¡ ´ë

ÇÑ Á¢±ÙÀ» µ¿±âÈ­ÇØ¾ß ÇÑ´Ù. (5Àå ÂüÁ¶)" - 80ÆäÀÌÁö

Á¦ 5ÀåÀÇ ³»¿ëÀº ¹ÂÅØ½º³ª À̺¥Æ® °°Àº ³»¿ëÀÌ´õ±º¿ä. ±×·±µ¥ Á¦°¡ ±Ã±ÝÇÑ °ÍÀº

°ÔÀÓ ¼­¹ö¿¡¼­ ¿©·¯ ½º·¹µå°¡ µ¥ÀÌÅÍ ¾ÆÀÌÅÛÀ̳ª °´Ã¼¿¡ ´ëÇÑ Á¢±ÙÀ» µ¿±âÈ­ÇÑ´Ù

´Â °³³äÀÌ ¾Æ! À̰ŠÇϸ鼭 ¿Í´ÝÁö ¾Ê½À´Ï´Ù.

°Ô½ÃÆÇ¿¡¼­ µ¿±âÈ­¸¦ Á¶È¸ÇÏ´Ï °ÔÀÓ Ç÷¹ÀÌÀÇ µ¿±âÈ­°¡ ¸¹ÀÌ Åä·ÐµÇ¾ú°í ¾²·¹µåÀÇ
µ¿±âÈ­´Â ÀÚ¼¼ÇÑ ³»¿ëÀÌ ¾ø´õ±º¿ä. ¼­¹ö Çùֿ¡¼­´Â Áß¿äÇÏ´Ù´Â ÃßÃøÀÌ µå³×¿ä.

µ¿±âÈ­¶õ ¸»ºÎÅÍ ¸·¿¬ÇÑ °ÍÀÌ »ç½ÇÀÔ´Ï´Ù. µ¿±âÈ­, ºñµ¿±âÈ­, ¿µ¾î»ç¿ëÀÚµéÀº Çö

½Ç°¨ÀÖ°Ô »ç¿ëÇÏ´Â Áö ¸ð¸£Áö¸¸ Çѱ¹¾î ¹ø¿ªÀº ¿µ ´À³¦ÀÌ ¾È¿À´Â ±º¿ä.

³×¶±¿¡ ¶Ù¾îµç Ãʺ¸µéÀ» À§Çؼ­ µ¿±âÈ­, ¾²·¹µå µ¿±âÈ­¸¦ ½¬¿î ºñÀ¯³ª ¿¹¸¦ µé¾î

°­ÀÇÇØÁÖ½Ã¸é °¨»çÇϰڽÀ´Ï´Ù. 
À½.. ¹¹ µ¿±âÈ­¸¦ ÇØ¾ßÇÏ´Â ÀÌÀ¯¾ß ¼öµµ ¾øÀÌ ¸¹°ÚÁö¸¸..

°£´ÜÇÑ ¿¹¸¦ µé¾îº¸°Ú½À´Ï´Ù.

¿ì¸®°¡ ¾î¶² °ÔÀÓ ¼­¹ö¸¦ Á¦ÀÛÇϴµ¥ UserµéÀ» Thread pool·Î °ü¸®Çϵµ·Ï

¼³°è¸¦ Çß½À´Ï´Ù. ¾Æ½Ã´Ù½ÃÇÇ Thread´Â Data´Â °øÀ¯Çϰí ProcessingÀº µ¿½Ã¿¡

ÇÏÁö¿ä.

A¶ó´Â User¿Í B¶ó´Â À¯Àú°¡ °¢±â ´Ù¸¥ Thread¿¡ ¹èÁ¤µÇ¾ú½À´Ï´Ù.

±×·±µ¥ A, B°¡ °ÅÀÇ ºñ½ÁÇÑ Àå¼Ò¿¡¼­ °ÅÀÇ ´ÙÁ׾´Â Monster¸¦

¸¸³µ½À´Ï´Ù. µÑÀº °ÅÀÇ µ¿½Ã¿¡ Ä®À» Èֵѷ¶Áö¿ä. 
A, B ¿¡¼­ DoAttack() À̶ó´Â ÇÔ¼ö¸¦ ½ÇÇàÇß½À´Ï´Ù.

µÎ°³ÀÇ ¾²·¹µå°¡ µ¿½Ã¿¡ ÀÌ ÇÔ¼ö¸¦ ºÎ¸¥°ÍÀÌÁö¿ä.

DoAttack()ÇÔ¼ö´Â ¸¸¾à °ø°Ý¹ÞÀº ³à¼®ÀÌ Á×¾úÀ¸¸é ¾Æ¿¹ ¸Þ¸ð¸®¿¡¼­ »èÁ¦Çϵµ·Ï

¸¸µé¾îÁ® ÀÖ¾ú½À´Ï´Ù.

A, B À¯ÀúÀÇ ¾²·¹µå°¡ °ÅÀÇ µ¿½Ã¿¡ ÀÌ ÇÔ¼ö¿¡ ÁøÀÔÇØ¼­ µÑ´Ù ÁøÇàÁßÀ϶§..

µÑÁßÀÇ Çϳª°¡ Delete¸¦ ÇÏ°í ³ª¸é ³ª¸ÓÁö ¾²·¹µåµµ Delete¸¦ ÇÏ·Á°í ÇϰÚÁö¿ä?

°ÅÀÇ Âû³ªÀÇ ¼ø°£¿¡ µÎ¹øÂ° ¾²·¹µå°¡ ¾ø¾Ö·Á°í ÇÑ ¸Þ¸ð¸®°¡ ¾²·¹±â°ªÀÌ 
µÇ¾î¹ö¸°°ÅÁö¿ä.. °á±¹ Access violationÀÌ ÀϾ°ÚÁö¿ä?

±×·¡¼­ ÀÌ·± »óȲÀ» ¹æÁöÇϱâ À§Çؼ­ Thread¿¡ ¾ÈÀüÀåÄ¡¸¦ ´ä´Ï´Ù.

¿¹¸¦ µé¾î DoAttack()ÇÔ¼öÀÇ DeleteÇÏ´Â ºÎºÐ ÀüÈÄ¿¡´Ù°¡ Lock/Unlock µîÀ» ´Þ¾Æ¼­

µÎ ¾²·¹µå°¡ µ¿½Ã¿¡ Á¢±ÙÇÏÁö ¸øÇϵµ·Ï Çϴ°ÅÁö¿ä.

µÑÁß ¹Ì¼¼ÇÏ°Ô ¸ÕÀú µµÂøÇѳðÀÌ ÀÏÀ» ´Ù ³¡³»¸é µÎ¹øÂ° ¾²·¹µå°¡ ±â´Ù¸®´Ù°¡

Äڵ忡 ÁøÀÔÇϴ°ÅÁö¿ä.

¹¹ ÀÌ·± °Å ¸»°íµµ ½Ã°£ µ¿±âÈ­¶ó´øÁö ÀÌ·±Àú·± ÀÌÀ¯µéÀÌ ¸¹ÀÌ ÀÖ°ÚÁö¿ä..

¿©Æ° µµ¿òÀÌ µÇ¾úÀ¸¸é ÁÁ°Ú³×¿ä 
Windows NT°¡ ¼³Ä¡µÉ ¼ö ÀÖ´Â ServerÁß¿¡ Machine»óÀÇ Àǹ̿¡¼­ 3°³ÀÌ»óÀÇ
CPUÀ» ÀåÂøÇÒ ¼ö ÀÖ´ÂÁö¿ä?
Àü Dual CPU(±×°ÍµÎ riskĨÀÌ ¾Æ´Ñ ÆæÆ¼¾ö½Ã¸®Áî)¹Û¿¡ º»ÀûÀÌ ¾ø¾î¼­¸®^^ 

NT ¿¡¼­µµ °¡´É ÇÕ´Ï´Ù. 16°³ ±îÁö µÇ´ø°¡? ¾Æ¸¶.. À½..

-ºñ¿±