[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: Reset a Lua thread?
- From: Patrick Donnelly <batrick@...>
- Date: Sat, 9 Apr 2011 20:40:26 -0400
On Sat, Apr 9, 2011 at 8:06 PM, Robert G. Jakabosky
<bobby@sharedrealm.com> wrote:
> On Saturday 09, Anthony Howe wrote:
>> Is it possible somehow to reset a Lua coroutine thread in the event of a
>> script error or some such, without having to nuke the thread and
>> recreate the thread's state?
>
> I think something like this would work. (Warning un-tested code).
>
> function resettable_thread(func)
> return coroutine.create(function()
> repeat
> coroutine.yield(pcall(func))
> until false
> end
> end
>
> It will always restart the thread with the same function. You could use a
> more complex wrapper to allow changing the function that the thread runs.
You can't use pcall like that in 5.1 if you want func to be able to yield.
--
- Patrick Donnelly