This resolves #34.  The solution is to track how far behind high priority tasks are, and to artifically slow down low priority tasks as high priority tasks get backed up.  This incurrs almost no overhead for high priority tasks, and the overhead for low priority tasks also remains very minimal.
Removed comment that does not help anything