mirror of
https://github.com/rust-lang/cargo.git
synced 2025-09-28 11:20:36 +00:00
Switch from AtomicU64 to Mutex.
Not all platforms support AtomicU64, so this swaps the usage with Mutex. The difference in performance should be imperceptible.
This commit is contained in:
parent
6658e1abe3
commit
1d35833e3b
2
Cargo.lock
generated
2
Cargo.lock
generated
@ -416,7 +416,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "cargo-util"
|
||||
version = "0.2.8"
|
||||
version = "0.2.9"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"core-foundation",
|
||||
|
@ -1,6 +1,6 @@
|
||||
[package]
|
||||
name = "cargo-util"
|
||||
version = "0.2.8"
|
||||
version = "0.2.9"
|
||||
rust-version.workspace = true
|
||||
edition.workspace = true
|
||||
license.workspace = true
|
||||
|
@ -4,7 +4,6 @@ use anyhow::{Context, Result};
|
||||
use ignore::overrides::OverrideBuilder;
|
||||
use ignore::{WalkBuilder, WalkState};
|
||||
use std::path::Path;
|
||||
use std::sync::atomic::{AtomicU64, Ordering};
|
||||
use std::sync::{Arc, Mutex};
|
||||
|
||||
/// Determines the disk usage of all files in the given directory.
|
||||
@ -40,7 +39,7 @@ fn du_inner(path: &Path, patterns: &[&str]) -> Result<u64> {
|
||||
.git_ignore(false)
|
||||
.git_exclude(false);
|
||||
let walker = builder.build_parallel();
|
||||
let total = Arc::new(AtomicU64::new(0));
|
||||
let total = Arc::new(Mutex::new(0u64));
|
||||
// A slot used to indicate there was an error while walking.
|
||||
//
|
||||
// It is possible that more than one error happens (such as in different
|
||||
@ -52,7 +51,8 @@ fn du_inner(path: &Path, patterns: &[&str]) -> Result<u64> {
|
||||
Ok(entry) => match entry.metadata() {
|
||||
Ok(meta) => {
|
||||
if meta.is_file() {
|
||||
total.fetch_add(meta.len(), Ordering::SeqCst);
|
||||
let mut lock = total.lock().unwrap();
|
||||
*lock += meta.len();
|
||||
}
|
||||
}
|
||||
Err(e) => {
|
||||
@ -73,5 +73,6 @@ fn du_inner(path: &Path, patterns: &[&str]) -> Result<u64> {
|
||||
return Err(e);
|
||||
}
|
||||
|
||||
Ok(total.load(Ordering::SeqCst))
|
||||
let total = *total.lock().unwrap();
|
||||
Ok(total)
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user