From abaa476641ccf2fbf73dae96471bc72dbaafb528 Mon Sep 17 00:00:00 2001 From: Philippe Canal <pcanal@fnal.gov> Date: Thu, 4 Feb 2021 21:30:48 -0600 Subject: [PATCH] Make TBufferMerger::GetQueueSize thread safe. This can now be safely use to avoid overloading the queue. --- io/io/inc/ROOT/TBufferMerger.hxx | 2 +- io/io/src/TBufferMerger.cxx | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/io/io/inc/ROOT/TBufferMerger.hxx b/io/io/inc/ROOT/TBufferMerger.hxx index 27fe36d399e..48592cf00ab 100644 --- a/io/io/inc/ROOT/TBufferMerger.hxx +++ b/io/io/inc/ROOT/TBufferMerger.hxx @@ -114,7 +114,7 @@ private: size_t fBuffered{0}; //< Number of bytes currently buffered TFileMerger fMerger{false, false}; //< TFileMerger used to merge all buffers std::mutex fMergeMutex; //< Mutex used to lock fMerger - std::mutex fQueueMutex; //< Mutex used to lock fQueue + mutable std::mutex fQueueMutex; //< Mutex used to lock fQueue std::queue<TBufferFile *> fQueue; //< Queue to which data is pushed and merged std::vector<std::weak_ptr<TBufferMergerFile>> fAttachedFiles; //< Attached files }; diff --git a/io/io/src/TBufferMerger.cxx b/io/io/src/TBufferMerger.cxx index 8d320d5362e..f7b9d5d1099 100644 --- a/io/io/src/TBufferMerger.cxx +++ b/io/io/src/TBufferMerger.cxx @@ -62,6 +62,7 @@ std::shared_ptr<TBufferMergerFile> TBufferMerger::GetFile() size_t TBufferMerger::GetQueueSize() const { + std::lock_guard<std::mutex> lock(fQueueMutex); return fQueue.size(); } -- GitLab