[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: ANN: coxpcall 1.6 (was RE: Xavate crash and coxpcall missing 'arg' variable)
- From: Javier Guerra <javier@...>
- Date: Wed, 18 May 2005 08:16:09 -0500
On Wednesday 18 May 2005 5:01 am, Mukhsein Johari wrote:
> > hard threads/forks are the only way when the code you call takes a long
> > time without generating output.
>
> Hi,
>
> Well, the async twisted framework (python) does this, I think without
> resorting to threads/forks. From what I understand (not enough good
> docs) when you have a 'long running' call, you recode it to return
> immediately (so that it does not block) with a what they call a
> 'defered'. This has an attached callback that gets called when there's
> something sent back. You might want to investigate that:
> http://twistedmatrix.com/
if the 'long running' call isn't your own code you might not be able to
'recode' it to make it fitting to a cooperative multitasking environment
(like Copas)
the technique you describe is very similar to the Classic MacOS system calls:
most of them had a 'sync' and 'async' version; the async take a callback to
notify it has finished.
my 'helper threads' module does something similar, but to keep it simple for
the user, it blocks the coroutine thread (yielding to other cothreads) while
it's busy.
it's very easy to use:
-- normal Copas running code
...
...
helper.do (function()
-- preemptively 'background' code
...
....
end)
-- normal copas code
...
...
but i run into some instabilities; when stress testing, the process died
randomly at the thread destruction code. since the thread library has to be
compiled _into_ the Lua core, and there were some version mismatches, i
figured it might be better to wait until we have a stable version 5.1... and
hope LuaThreads works better then.
--
Javier
Attachment:
pgpRnKfnXA_9N.pgp
Description: PGP signature