diff options
author | Adrian Kummerlaender | 2015-12-27 10:07:24 +0100 |
---|---|---|
committer | Adrian Kummerlaender | 2015-12-27 10:07:24 +0100 |
commit | 0f083843bc31bf985991728125ef74efca6ef7b7 (patch) | |
tree | af51d088fa7e6ea70a7ca47421eddb09494c8788 /src/utility | |
parent | 0f1b6aea1fc7a2753cfde98a74c1ab74e258576e (diff) | |
download | change-0f083843bc31bf985991728125ef74efca6ef7b7.tar change-0f083843bc31bf985991728125ef74efca6ef7b7.tar.gz change-0f083843bc31bf985991728125ef74efca6ef7b7.tar.bz2 change-0f083843bc31bf985991728125ef74efca6ef7b7.tar.lz change-0f083843bc31bf985991728125ef74efca6ef7b7.tar.xz change-0f083843bc31bf985991728125ef74efca6ef7b7.tar.zst change-0f083843bc31bf985991728125ef74efca6ef7b7.zip |
Introduce thread synchronization for tracking init and logging
This obviously leads to synchronizing syscalls that would otherwise happen in parallel. Luckily the goal of this library is to monitor file changes performed by single, user facing applications and as such it doesn't matter if some operations are slightly slower.
Diffstat (limited to 'src/utility')
-rw-r--r-- | src/utility/logger.h | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/src/utility/logger.h b/src/utility/logger.h index e21f6fd..30a6b44 100644 --- a/src/utility/logger.h +++ b/src/utility/logger.h @@ -1,6 +1,8 @@ #ifndef CHANGE_SRC_LOGGER_H_ #define CHANGE_SRC_LOGGER_H_ +#include <mutex> + #include <ext/stdio_filebuf.h> #include <boost/process.hpp> @@ -14,6 +16,8 @@ class Logger { stream_(&this->buffer_) { } void append(const std::string& msg) { + std::lock_guard<std::mutex> guard(this->write_mutex_); + this->stream_ << msg << std::endl; } @@ -25,6 +29,8 @@ class Logger { // flag. // void forward(boost::process::pistream& stream) { + std::lock_guard<std::mutex> guard(this->write_mutex_); + this->stream_ << std::string( (std::istreambuf_iterator<char>(stream)), (std::istreambuf_iterator<char>()) @@ -34,6 +40,7 @@ class Logger { private: __gnu_cxx::stdio_filebuf<char> buffer_; std::ostream stream_; + std::mutex write_mutex_; }; |