The ability for multiple threads to enter the same graph node without contention and conflict is a necessary component of the graph reduction of functional languages since graph components may be shared. Shared closures, however, compound the difficulty of priority management. The original GUM runtime system does not track which threads require the evaluation of which closures or which sparks relate to which threads. These problems are remedied in the novel implementation of GUM presented here which introduces dynamic thread hierarchies and supports prioritised scheduling.
Julian R. Dermoudy