− workers.push(std::thread::spawn(move || loop {
− let (w, stop) = {
− let mut work = work.lock().unwrap();
− (work.t.pop_front(), work.stop)
− };
− if let Some((item, vertex, rec, new_papa)) = w {
− // This parent has changed.
− info!("record existing file {:?} on thread {:?}", item, t);
− rec.lock()
− .unwrap()
− .record_existing_file(
− txn.clone(),
− diff_algorithm,
− channel.clone(),
− working_copy.clone(),
− &changes,
− &item,
− new_papa,
− vertex,
− )
− .unwrap();
− } else if stop {
− info!("stop {:?}", t);
− break;
− } else {
− info!("yield {:?}", t);
− std::thread::park_timeout(std::time::Duration::from_secs(1));
+ workers.push(std::thread::spawn(move || {
+ loop {
+ let (w, stop) = {
+ let mut work = work.lock().unwrap();
+ (work.t.pop_front(), work.stop)
+ };
+ if let Some((item, vertex, rec, new_papa)) = w {
+ // This parent has changed.
+ info!("record existing file {:?} on thread {:?}", item, t);
+ rec.lock()
+ .unwrap()
+ .record_existing_file(
+ txn.clone(),
+ diff_algorithm,
+ channel.clone(),
+ working_copy.clone(),
+ &changes,
+ &item,
+ new_papa,
+ vertex,
+ )?;
+ } else if stop {
+ info!("stop {:?}", t);
+ break;
+ } else {
+ info!("yield {:?}", t);
+ std::thread::park_timeout(std::time::Duration::from_secs(1));
+ }