A mechanism like this (but in C) is used in the Maemo / N770-800 software, and most likely many embedded devices with low memory. When switching away from applications, they might either remain on memory, or be killed away with their state stored on disk.
With this in mind, I created a "resurrection" mechanism to Lua Lanes. It essentially does the same, but automatically. Whatever you have in the 'state' global table will be returned to the main thread if yours gets cancelled.
The Maemo / Nxxx way relies on the process to detect that it was killed last time, and to restore its state immediately at next launch, as if it was there in memory all along. With Lanes, resurrected threads would get the same 'state' as they were left off, but need to draw GUI things etc. to according state themselves. My experience is, this is a sound model to work with, and even self-documenting in that if you place something in 'state', you mean it to be persistent.
The goal I have with this, is being able to --eventually-- toss running Lua processes not only in time, but from machine to machine, without losing their "current" state. Similar to net desktops.
Grellier, Thierry kirjoitti 3.8.2007 kello 11:24: