[luausers-kr] lua_tinker 에서 coroutine 관련 작업시 문제가 있는거같은데요..?

67 views
Skip to first unread message

luna

unread,
Apr 20, 2010, 1:30:48 PM4/20/10
to luausers-kr
coroutine 으로 돌아가는 함수 내에서 c++ 코드에서 table 을 얻어오게 하였습니다.
그런데 계속 nil 만 반환되더군요. 그래서 stack 을 확인해봤습니다.
thread , table 두개만 나오더군요.
아마도 문제가 있는것으로 추측되는 부분은 일단 coroutine(thread)는
독립된 environment stack을 갖으며 glue 함수 내에서는 main(?) 의 stack 에 table 을 넣는듯 합
니다.

서로 전혀 다른 부분이기에 coroutine(thread) 에서 참조를 할수 없어서 nil 을 반환 받는거 같기도 하구요.
upvalue ,setfenv ,getfenv 를 검색키워드로 보고 있는데 과연 맞는것인지요?


lua 코드는 다음과 같은 느낌입니다.
getTable() 함수가 binding 된 c++ 코드 입니다.

--------------------------------------------------------------------------------------------
-- tabletest.lua
--------------------------------------------------------------------------------------------
local co = coroutine.create(
function()
tb = getTable()
if tb ~= nil then
print (tb.name)
end
end
)
coroutine.resume( co )
--------------------------------------------------------------------------------------------

//c++
lua_tinker::table getTable( void )
{
lua_tinker::table tb(g_luaState);
tb.set("name","john");
tb.set("age","16");
tb.set("country","korea");
return tb;
}


--
메일링리스트 링크 : http://groups.google.com/group/luausers-kr

Reply all
Reply to author
Forward
0 new messages