lua-users home
lua-l archive

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


This is a very useful read: http://www.lua.org/pil/9.1.html

Reading it I think that your problem may come from the fact that your
passing the variable process instead of the method pointer for process.
 Instead try:

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

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

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

Remember that process() and process arn't the same thing, in fact you
can do the following and its valid (as dumb as it may be):

process = 'some value';
function process()
  print process;
end

process()

You will recieve an output of:
some value

Tested the idea in 502 and it worked, I'm not using 5.1 so I can't speak
for how it would work.

 - Jeremy

"Help I suffer from the oxymoron Corporate Security."


> -------- Original Message --------
> Subject: Re: Is this a scoping issue?
> From: Lee Smith <wink@gettcomm.com>
> Date: Thu, March 16, 2006 12:21 pm
> To: Lua list <lua@bazar2.conectiva.com.br>
> 
> I don't believe so. It is created suspended, and I want it to start, but 
> for some reason I can't resume it once it has yielded.
> 
> 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?
> >>    
> >>
> >
> >  
> >