Although I previously suggested a low-priority event callback, `system-idle-evt' seems even better. The `system-idle-evt' function didn't exist when we implemented syntax coloring as a background task.
Using `system-idle-event' stays out of the way of other GUI events in the same way as a low-priority callback, and since `system-idle-evt' is fair (or is supposed to be), multiple background tasks should work fine, allowing each a turn when no other work is available. Low-priority callbacks, meanwhile, effectively have a higher priority than threads blocked on `system-idle-evt'. So, maybe it's good that syntax coloring uses callbacks, since that will give it a higher priority than loading cross-reference information. At Mon, 9 Nov 2009 19:48:16 -0600, Robby Findler wrote: > I would guess it would be a better fit for GUI interactivity. Use a > low priority callback to trigger each quantum of work. > > Robby > > On Monday, November 9, 2009, Eli Barzilay <e...@barzilay.org> wrote: > > On Nov 9, Robby Findler wrote: > >> Thanks, Eli. That looks nice. > >> > >> Matthew suggested something similar, but using mzlib/couroutine, > >> where I use a low-priority gui callback to give the thread the next > >> quantum. > > > > Is there any advantage for that? > > > > > > On Nov 9, Robby Findler wrote: > >> PS: feel free to check this in, but it probably belongs in > >> scribble/xref or setup/xref, not in the syntax checker. > > > > I'll probably put it in `scheme/promise' as some `delay/idle', so it > > works with `force' as usual. > > > > (There is some concern if there are several of these things active -- > > if both use the same delay values, then one can starve the other. But > > I don't think that this is a problem since it's used only for idle > > computations.) > > > > -- > > ((lambda (x) (x x)) (lambda (x) (x x))) Eli Barzilay: > > http://barzilay.org/ Maze is Life! > > > _________________________________________________ > For list-related administrative tasks: > http://list.cs.brown.edu/mailman/listinfo/plt-dev _________________________________________________ For list-related administrative tasks: http://list.cs.brown.edu/mailman/listinfo/plt-dev