src/parallelism.rs

changeset 201
ea2d1e40d707
parent 197
1f301affeae3
equal deleted inserted replaced
200:fbd4791f16bc 201:ea2d1e40d707
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);

mercurial