We should use per-thread task lists. This means there will be a lot less contention on the scheduler lock, but it also makes load balancing harder.