On May 29, 2012, at 9:15 AM, Alexander Burger wrote:
> (de processCustomers (N . Prg)
> (let Lst (need N)
> (iter (tree 'nr '+CuSu)
> (let Pos (wait NIL (memq NIL Lst))
> (set Pos T)
> (later Pos
> (run Prg)
> NIL ) ) ) ) ) )
Thanks, that looks good. My only objection would be the additional fork()
implied by 'later'.
I'll try to get it running with that approach and do some benchmarking. Later,
I'll try to compare that to a patched version that uses vfork() instead of
fork() and see if that makes a difference.
Another option to avoid the fork() would be to have a pool of pre-forked
instances reading from a jobs queue or something like that (perhaps taking
advantage of an additional database to implement the queue?), but my skills are
still lacking on how to implement that. I'll worry about that if the fork()
time is noticeable.