Áö±Ý °£´ÜÇÑ ½Ã½ºÅÛ Á¤Áö ÇÁ·Î±×·¥À» Â¥°í ÀÖ±¸¿ä....
´ëÃæÀÇ ¼Ò½º´Â ´ÙÀ½°ú °°¾Æ¿ä.....
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°³ ±îÁö µÇ´ø°¡? ¾Æ¸¶.. À½..
-ºñ¿±