native code can tell the schedulers how many reductions to take, but the schedulers are actually cooperative and not literally preemptive, so poorly written native code can lie, crash, consume a scheduler, etc.