Libftpp
A modern C++ library
thread_safe_iostream.cpp
Go to the documentation of this file.
2 
4 std::mutex ThreadSafeIOStream::_mutex;
5 
6 void ThreadSafeIOStream::setPrefix(const std::string& prefix)
7 {
8  std::lock_guard<std::mutex> lock(_mutex);
9  _prefix = prefix;
10 }
11 
12 ThreadSafeIOStream& ThreadSafeIOStream::operator<<(std::ostream& (*funct)(std::ostream&))
13 {
14  std::lock_guard<std::mutex> lock(_mutex);
15  flushBuffer();
16  funct(std::cout);
17  return *this;
18 }
19 
20 void ThreadSafeIOStream::flushBuffer()
21 {
22  std::string content = _buffer.str();
23  if (!content.empty())
24  {
25  std::cout << _prefix << content;
26  _buffer.str("");
27  _buffer.clear();
28  }
29 }
Thread-Safe I/O Stream.
void setPrefix(const std::string &prefix)
ThreadSafeIOStream & operator<<(std::ostream &(*funct)(std::ostream &))
thread_local ThreadSafeIOStream threadSafeCout