pray rayon doesn't spawn 600 threads and crash

This commit is contained in:
Quaternions 2024-01-11 22:07:01 -08:00
parent c2041b33e4
commit cef0f38482

View File

@ -648,17 +648,17 @@ async fn write_files(config:WriteConfig,mut context:DecompiledContext)->AResult<
}
//run the async
std::thread::scope(|s|{
let threads:Vec<std::thread::ScopedJoinHandle<'_,AResult<()>>>=write_queue.into_iter().map(|(write_path,node,node_name_override)|
s.spawn(||write_item(&context.dom,write_path,node,node_name_override,config.write_models,config.write_scripts))
).collect();
for thread in threads{
match thread.join(){
Ok(_)=>(),
Err(e)=>println!("thread error: {:?}",e),
}
{
let dom=&context.dom;
let write_models=config.write_models;
let write_scripts=config.write_scripts;
let results:Vec<AResult<()>>=rayon::iter::ParallelIterator::collect(rayon::iter::ParallelIterator::map(rayon::iter::IntoParallelIterator::into_par_iter(write_queue),|(write_path,node,node_name_override)|{
write_item(&dom,write_path,node,node_name_override,write_models,write_scripts)
}));
for result in results{
result?;
}
});
}
//run the destroy
for destroy_ref in destroy_queue{