lua_newthread, lua_resume, lua_yield, lua_xmove,
1 lua_newthread
lua_State *lua_newthread (lua_State *L);
»õ·Î¿î ÄÚ·çÆ¾À» »ý¼ºÇؼ ½ºÅÃÀÇ ÃÖ»óÀ§¿¡´Ù Ǫ½¬Çϰí, ÄÚ·çÆ¾ ÄÁÅØ½ºÆ®¸¦ ¹ÝȯÇÑ´Ù. ¿¡·¯°¡ »ý±ä °æ¿ì¿¡´Â NULLÀ» ¹ÝȯÇÑ´Ù. ±âº»ÀûÀ¸·Î ÄÚ·çÆ¾Àº ÁßÁö(suspend)µÈ »óÅ´Ù.
- »õ·Î¿î ÄÚ·çÆ¾Àº ±âÁ¸ ÄÚ·çÆ¾¿Í Àü¿ª ¿ÀºêÁ§Æ®µéÀ» °øÀ¯ÇÑ´Ù.
- »õ·Î¿î ÄÚ·çÆ¾Àº ±âÁ¸ ÄÚ·çÆ¾¿Í´Â º°°³ÀÇ ·±Å¸ÀÓ ½ºÅÃÀ» °¡Áø´Ù.
- »õ·Î¿î ÄÚ·çÆ¾Àº ±âÁ¸ ÄÚ·çÆ¾¿Í´Â º°°³ÀÇ Àü¿ª Å×À̺íÀ» °¡Áø´Ù.
ÄÚ·çÆ¾ÀÇ ¸ÞÀÎ ÇÔ¼ö´Â ÀÌ ÇÔ¼ö°¡ ¾Æ´Ï¶ó lua_resume ÇÔ¼ö¸¦ ÅëÇØ ÁöÁ¤ÇÏ°Ô µÈ´Ù. ¾Æ·¡ÂÊÀÇ lua_resume ÇÔ¼ö¸¦ Âü°íÇϱ⠹ٶõ´Ù.
5.0.2 ÀÌÀü ¹öÀü¿¡´Â lua_closethread ¶ó´Â ÇÔ¼ö·Î ÄÚ·çÆ¾¸¦ ¸í½ÃÀûÀ¸·Î »èÁ¦Çß´ø ¸ð¾çÀε¥, 5.0.2 ÀÌÈĺÎÅÍ´Â °¡ºñÁö Ä÷º¼ÇÀ¸·Î ÀÚµ¿ 󸮵ȴÙ.
2 lua_resume
int lua_resume (lua_State *L, int narg);
ÇØ´ç ÄÚ·çÆ¾ÀÇ µ¿ÀÛÀ» Àç°³ÇÑ´Ù. narg´Â ÄÚ·çÆ¾ ÂÊÀ¸·Î ³Ñ±æ ÀμöÀÇ °¹¼ö·Î¼, lua_resumeÀ» È£ÃâÇϱâ Àü¿¡ Ǫ½¬ÇØµÖ¾ß ÇÑ´Ù.
ÃÖÃÊ·Î lua_resumeÀ» ½ÇÇàÇÏ´Â °æ¿ì, Áï ÄÚ·çÆ¾¸¦ »ý¼ºÇÑ ÈÄ Ã³À½À¸·Î ½ÇÇàÇÏ´Â °æ¿ì¿¡´Â ÄÚ·çÆ¾ÀÇ ¸öü°¡ µÉ ÇÔ¼ö¸¦ Àμöµéº¸´Ù ¸ÕÀú Ǫ½¬ÇØµÖ¾ß ÇÑ´Ù. ÀÌÈĺÎÅÍ´Â ±×³É Àμöµé¸¸ Ǫ½¬ÇÏ¸é µÈ´Ù.
ÃÖÃʷΠȣÃâÇÏ´Â °æ¿ì, ÀÌÈĺÎÅÍ È£ÃâÇÏ´Â °æ¿ì,
ÁغñÇØ¾ßÇÒ ½ºÅà ÁغñÇØ¾ßÇÒ ½ºÅÃ
+-------------------+
| arg2 |
+-------------------+ +-------------------+
| arg1 | | arg2 |
+-------------------+ +-------------------+
| thread function | | arg1 |
+-------------------+ +-------------------+
| thread | | ... |
+-------------------+ +-------------------+
ÀÌ ÇÔ¼ö°¡ ¸®ÅÏÇÏ´Â °æ¿ì´Â ¼¼ °¡ÁöÀÌ´Ù. ù¹øÂ°´Â ÄÚ·çÆ¾ ½ÇÇàÀÌ ³¡³ °æ¿ìÀ̰í, µÎ¹øÂ°´Â lua_yield ÇÔ¼ö¸¦ ÀÌ¿ëÇØ ÄÚ·çÆ¾ÀÇ µ¿ÀÛÀ» ÁßÁö½ÃŲ °æ¿ìÀÌ´Ù. ±×¸®°í ¸¶Áö¸·Àº ¿¡·¯°¡ ¹ß»ýÇÑ °æ¿ì´Ù.
| ÄÉÀ̽º | ¸®Åϰª | ½ºÅà |
| ÄÚ·çÆ¾ ½ÇÇàÀÌ ³¡³ °æ¿ì | 0 | ÄÚ·çÆ¾ ¸ÞÀÎ ÇÔ¼ö°¡ ¹ÝȯÇÑ °ªÀÌ µé¾î°¡ ÀÖ´Ù. |
| lua_yield¸¦ È£ÃâÇÑ °æ¿ì | LUA_YIELD (1) | lua_yield ÇÔ¼ö¿¡´Ù ³Ñ±ä ÀμöµéÀÌ µé¾î°¡ ÀÖ´Ù. |
| ¿¡·¯°¡ »ý±ä °æ¿ì | 0 or 1ÀÌ ¾Æ´Ñ °ª | ¿¡·¯ ¸Þ½ÃÁö¸¸ÀÌ µé¾î°¡ ÀÖ´Ù. |
3 lua_yield
int lua_yield (lua_State *L, int nresults);
·ç¾Æ ÄÚ·çÆ¾Àº ¿ÜºÎ¿¡¼ µ¿ÀÛÀ» ÁßÁö½ÃŰ´Â °ÍÀÌ ºÒ°¡´ÉÇÏ´Ù. ±×·¯¹Ç·Î ÀÌ ÇÔ¼ö´Â ·ç¾Æ¿¡´Ù µî·ÏÇÑ C ÇÔ¼ö ³»ºÎ¿¡¼ ´ÙÀ½°ú °°Àº ÇüÅ·θ¸ »ç¿ëÇÒ ¼ö ÀÖ´Ù.
return lua_yield(L, nresults);
¿Ö ÀÌ·± ½ÄÀ¸·Î ¹Û¿¡ »ç¿ëÇÒ ¼ö ¾ø´ÂÁö´Â, lua_resume ÇÔ¼ö¸¦ È£ÃâÇÑ ´ÙÀ½¿¡ ÀÌ ÇÔ¼ö¸¦ ¾îµð¼ ¾î¶»°Ô È£ÃâÇÒ °ÍÀÎÁö ÂùÂùÈ÷ »ý°¢ÇØ º¸¸é ¾Ë ¼ö ÀÖÀ» °ÍÀÌ´Ù. nresult´Â ·ç¾ÆÂÊÀ¸·Î ³Ñ±æ ÀμöÀÇ °¹¼ö·Î¼, lua_yield¸¦ È£ÃâÇϱâ Àü¿¡ Ǫ½¬ÇØµÖ¾ß ÇÑ´Ù.
4 lua_xmove
void lua_xmove (lua_State *from, lua_State *to, int n);
ÄÚ·çÆ¾ °£¿¡ µ¥ÀÌÅ͸¦ ±³È¯Çϱâ À§ÇÑ ÇÔ¼ö´Ù. from ÄÚ·çÆ¾ÀÇ ½ºÅÿ¡¼ n °³¸¸ÅÀÇ ¾ÆÀÌÅÛÀ» ÆËÇØ¼, to ÄÚ·çÆ¾ÀÇ ½ºÅÿ¡´Ù Ǫ½¬ÇÑ´Ù.
SeriousMoin v1 (koMoinMoin 1.0a4 Modified)