| ÈÞ´ë¿ë ÄÚ À× ¶óÀ̺귯¸® ANSI C·Î ÀÛ¼ºµÈ ÈÞ´ë¿ë ÄÚ À× ¶óÀ̺귯¸® ±¸Çö |
Áö±Ý ´Ù¿î·Îµå |
ÈÞ´ë¿ë ÄÚ À× ¶óÀ̺귯¸® ¼øÀ§ ¹× ¿ä¾à
- °Ô½ÃÀÚ À̸§:
- Davide Libenzi
- °Ô½ÃÀÚ À¥»çÀÌÆ®:
- http://www.xmailserver.org/davide.html
ÈÞ´ë¿ë ÄÚ À× ¶óÀ̺귯¸® ű×
ÈÞ´ë¿ë ÄÚ À× ¶óÀ̺귯¸® ¼³¸í
ÈÞ´ë¿ë ÄÚ ·è¸° ¶óÀ̺귯¸® ±¸ÇöÀº ANSI C·Î ÀÛ¼ºµÇ¾ú½À´Ï´Ù ÈÞ´ë¿ë Coroutine ¶óÀ̺귯¸® (PCL)´Â ÄÚ ·çƾ¿¡ ´ëÇÑ ³·Àº ¼öÁØÀÇ ±â´ÉÀ» ±¸ÇöÇÕ´Ï´Ù. CorroutineÀ̶ó´Â ¿ë¾îÀÇ Á¤ÀÇ´Â Donald E. Knuth.Coroutines°¡ ÄÄÇ»ÅÍ ÇÁ·Î±×·¡¹ÖÀÇ ±â¼úÀ» ¸¸³ª´Â °ÍÀ¸·Î °£´ÜÇÑ Çù·Â ¸ÖƼ ŽºÅ· ȯ°æÀÔ´Ï´Ù. Á¶ÀÛ¿¡ OS Ä¿³Î Âü¿©°¡ ¾ø±â ¶§¹®¿¡ ÄÚ½ºÆ¾Àº ÇÁ·Î¼¼½º ¶Ç´Â ½º·¹µå ½ºÀ§Ä¡º¸´Ù ÈξÀ ºü¸¨´Ï´Ù. ¶ÇÇÑ Coroutines´Â ½º·¹µåÀÇ ÇÁ·Î¼¼½ºº¸´Ù ÈξÀ ÀûÀº OS ÀÚ¿øÀ» ÇÊ¿ä·ÎÇÕ´Ï´Ù. ÀÌ ¶óÀ̺귯¸®¸¦ ÀÛ¼ºÇÏ´Â ¾ÆÀ̵ð¾î´Â Linux Epoll ±â´É°ú ¼º´ÉÀ» Å×½ºÆ®ÇßÀ» ¶§ ½ÃÀ۵Ǿú½À´Ï´Ù. óÀ½¿¡´Â E. Toernig°¡ Coro Library¸¦ »ç¿ëÇÏ¿© ½ÃÀÛÇÏ°í ¶óÀ̺귯¸®¸¦ ¸Å¿ì Èï¹Ì·Î¿ü½À´Ï´Ù. ±×°ÍÀº °£´ÜÇÏ°í °·ÂÇß½À´Ï´Ù. CORO ¶óÀ̺귯¸®ÀÇ ÇÑ°è´Â GCCÀÇ Æ¯Á¤ ¹öÀü°ú ÇÔ²² »ç¿ëµÇÁö ¾ÊÀ» ¶§´Â ºñ À̽ļº°ú Ãæµ¹ÀÌ¿´½À´Ï´Ù. GNU PTH ¶óÀ̺귯¸®¿¡¼ ÈÞ´ë¿ë ÄÁÅؽºÆ® ½ºÀ§Äª ¾ÆÀ̵ð¾î¸¦ ¼öÇàÇÏ¿© Àü¼ú ÇÑ ¹®Á¦¸¦ ÇØ°áÇϱâ À§ÇØ »õ·Î¿î ¶óÀ̺귯¸®¸¦ ÀÛ¼ºÇϱâ·Î °áÁ¤Çß½À´Ï´Ù. ÀÌ ¶óÀ̺귯¸®´Â °ÅÀÇ ¸ðµç UNIX ½Ã½ºÅÛ ¹× Windows¿¡¼ ½±°Ô ÈÞ´ë ÇÒ ¼ö ÀÖ½À´Ï´Ù. uContext.h ±â´É (getContext () / makeContest () / swapcontext ()) ¶Ç´Â Ç¥ÁØ longjmp () / setjmp ()¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.
ÈÞ´ë¿ë ÄÚ À× ¶óÀ̺귯¸® °ü·Ã ¼ÒÇÁÆ®¿þ¾î