-// Copyright (C) 2019-2024 Joel Rosdahl and other contributors
+// Copyright (C) 2019-2025 Joel Rosdahl and other contributors
//
// See doc/authors.adoc for a complete list of contributors.
//
DEBUG_ASSERT(value <= 1.0);
int16_t new_value = static_cast<int16_t>(1000 * value);
+
+ std::unique_lock<std::mutex> lock(m_mutex);
+
if (new_value == m_current_value) {
return;
}
-// Copyright (C) 2019-2021 Joel Rosdahl and other contributors
+// Copyright (C) 2019-2025 Joel Rosdahl and other contributors
//
// See doc/authors.adoc for a complete list of contributors.
//
#include <cstddef>
#include <cstdint>
+#include <mutex>
#include <string>
class ProgressBar
void update(double value);
private:
+ std::mutex m_mutex;
const std::string m_header;
const size_t m_width;
const bool m_stdout_is_a_terminal;
LocalStorage::get_compression_statistics(
const uint32_t threads, const ProgressReceiver& progress_receiver) const
{
- std::atomic<uint64_t> content_size{0};
- std::atomic<uint64_t> actual_size{0};
- std::atomic<uint64_t> incompressible_size{0};
- std::atomic<uint32_t> completed_dirs{0};
+ std::atomic<uint64_t> content_size = 0;
+ std::atomic<uint64_t> actual_size = 0;
+ std::atomic<uint64_t> incompressible_size = 0;
+ std::atomic<uint32_t> completed_dirs = 0;
const size_t read_ahead =
std::max(static_cast<size_t>(10), 2 * static_cast<size_t>(threads));