[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Copying data from lua_State to lua_State
- From: "Jeffrey Williams" <jwilliams@...>
- Date: Fri, 23 Sep 2005 09:08:17 -0400
Hi lua coders!
I've been told lua_xmove is not to be used for moving data between
lua_States that are not coroutines of each other. This is definitely true!
So I've coded up a nice funtion which handles copying from state to state
and it works fine supporting all the lua types.
Now to my question. After doing this function, I started to think. What if
I just make every lua_State in my program a coroutine of each other? Then I
could use lua_xmove all the time. But the problem is they would all share
global variables, however, that can be fixed by just giving each new
coroutine it's own global table....
Is this a valid solution? What are the drawbacks/penalities?
To be clear, I suggest doing something like this:
At program start, create a master lua_State, then never create a new state
again. Just always just lua_newthread on the master state, then give the
new thread a separate global table...
On a separate note: I think my copy_state_state function is quite complete,
and even handles userdata (if a special metamethod is defined), would there
be interest in adding it to the lua_api so others don't have to reinvent it?
Because it seems like a sorely lacking feature. It could probably be
inserted behind the scenes in lua_xmove so that it does the state to state
copy when lua_xmove is used on 2 states that are not coroutines of each
other.
Jeff