| 210 { |
210 { |
| 211 match self { |
211 match self { |
| 212 Self::SingleThreaded => job(TaskBudget::SingleThreaded), |
212 Self::SingleThreaded => job(TaskBudget::SingleThreaded), |
| 213 Self::MultiThreaded { scope, budget } => { |
213 Self::MultiThreaded { scope, budget } => { |
| 214 let spawn = budget |
214 let spawn = budget |
| 215 .fetch_update(Release, Relaxed, |n| (n > 1).then_some(n - 1)) |
215 .try_update(Release, Relaxed, |n| (n > 1).then_some(n - 1)) |
| 216 .is_ok(); |
216 .is_ok(); |
| 217 if spawn { |
217 if spawn { |
| 218 scope.spawn(|scope| { |
218 scope.spawn(|scope| { |
| 219 let task_budget = TaskBudget::MultiThreadedZoom { scope, budget }; |
219 let task_budget = TaskBudget::MultiThreadedZoom { scope, budget }; |
| 220 job(task_budget); |
220 job(task_budget); |