lua-users home
lua-l archive

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]


I should also note, that this appears to function just fine when all the code is in one file. Although the differences there could be that in my actual application I'm using lua_dobuffer to load the chunks, and in my little proof of concept application I'm using lua_dofile.

jdarling@eonclash.com wrote:

Shouldn't you be calling yield() instead of resume(co)?

- Jeremy

"Help I suffer from the oxymoron Corporate Security."


-------- Original Message --------
Subject: Is this a scoping issue?
From: Lee Smith <wink@gettcomm.com>
Date: Thu, March 16, 2006 11:41 am
To: lua@bazar2.conectiva.com.br

I'm having some problems with a coroutine I create. Here is the order of things:

I create a lua_State and load 3 files into it, each containing its own function as follows:

In file1:

function init()
   print "init"
   co = coroutine.create(process)
   coroutine.resume(co)
end

In file2:

function process()
   print "yielding the coroutine"
   coroutine.yield()
   print "running again"
end

In file3:

function callback()
   print "resuming"
   print(coroutine.resume(co))
end


Now, when I make a lua_pcall to init, the coroutine starts the process function just like I would expect. Once it yields, I run off and do some stuff in my c code, and then pcall callback to wake the coroutine back up. However the call to resume is failing. Here is my output:

init
yielding the coroutine
c++ - doing some work
resuming
false   cannot resume non-suspended coroutine

Any ideas as to where I've gone wrong?