[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: [PATCH] lua_forcereturn()
- From: Luiz Henrique de Figueiredo <lhf@...>
- Date: Fri, 18 Jul 2008 23:52:20 -0300
> I apologise for being not quite in context, so my question may be a
> silly one. I see the expected use case of this feature roughly as
> follows (pseudocode):
>
> 1. [worker thread] spawn_watchdog_thread(L); lua_pcall(L, <stuff>);
> stop_watchdog_thread();
> 2. [watchdog thread] if (spent_too_much_time()) lua_forcereturn(L, 1);
>
> If forcereturn is triggered, lua_pcall() returns (prematurely) in
> worker thread, and worker thread execution continues as usual.
>
> The question: How would worker thread know that lua_pcall() returned
> due to lua_forcereturn() call somewhere (except that it may ask the
> watchdog thread)?
>
> I'd expect some LUA_ERRFORCED return code -- anyway, this is an error
> scenario, since our script presumably was stopped somewhere in the
> middle. Would I be able to reuse the Lua state after lua_(p)call() was
> "forcereturned"? If not, then how is such forcereturning different
> from, say, just calling lua_panic() righ after it was detected that
> forcereturn flag was set?
I fail to see the need for lua_forcereturn: you can just use lua_error.
Remember the Lua can raise errors on any Lua value, not just strings.
A suitable error value can be used to transmit any info on the cause
of error.