Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r85709 - in trunk: boost/thread libs/thread/example libs/thread/test
From: vicente.botet_at_[hidden]
Date: 2013-09-16 13:24:30


Author: viboes
Date: 2013-09-16 13:24:30 EDT (Mon, 16 Sep 2013)
New Revision: 85709
URL: http://svn.boost.org/trac/boost/changeset/85709

Log:
Thread: Added ostream_buffer.

Added:
   trunk/boost/thread/ostream_buffer.hpp (contents, props changed)
   trunk/libs/thread/example/not_interleaved2.cpp (contents, props changed)
Text files modified:
   trunk/boost/thread/ostream_buffer.hpp | 35 ++++++++++++++++++++++
   trunk/libs/thread/example/not_interleaved2.cpp | 61 ++++++++++++++++++++++++++++++++++++++++
   trunk/libs/thread/test/Jamfile.v2 | 2 +
   3 files changed, 98 insertions(+), 0 deletions(-)

Added: trunk/boost/thread/ostream_buffer.hpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ trunk/boost/thread/ostream_buffer.hpp 2013-09-16 13:24:30 EDT (Mon, 16 Sep 2013) (r85709)
@@ -0,0 +1,35 @@
+// (C) Copyright 2013 Vicente J. Botet Escriba
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+
+#ifndef BOOST_THREAD_OSTREAM_BUFFER_HPP
+#define BOOST_THREAD_OSTREAM_BUFFER_HPP
+
+#include <boost/thread/detail/config.hpp>
+#include <boost/thread/detail/delete.hpp>
+#include <sstream>
+
+#include <boost/config/abi_prefix.hpp>
+
+namespace boost
+{
+
+ template <typename OStream>
+ class ostream_buffer
+ {
+ public:
+ typedef std::basic_ostringstream<typename OStream::char_type, typename OStream::traits_type> stream_type;
+ ostream_buffer(OStream& os) : os_(os) {}
+ ~ostream_buffer() { os_ << o_str_.str(); }
+ stream_type& stream() { return o_str_; }
+ private:
+ OStream& os_;
+ stream_type o_str_;
+ };
+}
+
+#include <boost/config/abi_suffix.hpp>
+
+#endif // header

Added: trunk/libs/thread/example/not_interleaved2.cpp
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ trunk/libs/thread/example/not_interleaved2.cpp 2013-09-16 13:24:30 EDT (Mon, 16 Sep 2013) (r85709)
@@ -0,0 +1,61 @@
+// (C) Copyright 2012 Howard Hinnant
+// (C) Copyright 2012 Vicente Botet
+//
+// Distributed under the Boost Software License, Version 1.0. (See accompanying
+// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+// adapted from the example given by Howard Hinnant in
+
+#define BOOST_THREAD_VERSION 4
+
+#include <iostream>
+#include <boost/thread/scoped_thread.hpp>
+#include <boost/thread/ostream_buffer.hpp>
+
+void use_cerr()
+{
+ using namespace boost;
+ chrono::steady_clock::time_point tf = chrono::steady_clock::now() + chrono::seconds(5);
+ int i = 0;
+ while (chrono::steady_clock::now() < tf)
+ {
+ ostream_buffer<std::ostream> mcerr(std::cerr);
+ mcerr.stream() << "logging data to cerr " << i++ << "\n";
+ this_thread::sleep_for(chrono::milliseconds(250));
+ }
+}
+
+void use_cout()
+{
+ using namespace boost;
+ chrono::steady_clock::time_point tf = chrono::steady_clock::now() + chrono::seconds(5);
+ int i = 0;
+ while (chrono::steady_clock::now() < tf)
+ {
+ ostream_buffer<std::ostream> mcout(std::cout);
+ mcout.stream() << "logging data to cout " << i++ << "\n";
+ this_thread::sleep_for(chrono::milliseconds(500));
+ }
+}
+
+int main()
+{
+ using namespace boost;
+
+ scoped_thread<> t1(&use_cerr);
+ scoped_thread<> t2(&use_cout);
+ this_thread::sleep_for(chrono::seconds(2));
+ std::string nm = "he, he\n";
+ {
+ ostream_buffer<std::ostream> mcout(std::cout);
+ mcout.stream() << "Enter name: \n";
+ }
+ t1.join();
+ t2.join();
+ {
+ ostream_buffer<std::ostream> mcout(std::cout);
+ mcout.stream() << nm;
+ }
+ return 0;
+}
+

Modified: trunk/libs/thread/test/Jamfile.v2
==============================================================================
--- trunk/libs/thread/test/Jamfile.v2 Mon Sep 16 13:15:05 2013 (r85708)
+++ trunk/libs/thread/test/Jamfile.v2 2013-09-16 13:24:30 EDT (Mon, 16 Sep 2013) (r85709)
@@ -716,6 +716,7 @@
           [ thread-run2 ../example/producer_consumer.cpp : ex_producer_consumer ]
           [ thread-run2 ../example/not_interleaved.cpp : ex_not_interleaved ]
           [ thread-run2 ../example/lambda_future.cpp : ex_lambda_future ]
+ [ thread-run2 ../example/not_interleaved2.cpp : ex_not_interleaved2 ]
 
     ;
 
@@ -794,6 +795,7 @@
           #[ thread-run test_8960.cpp ]
           [ thread-run test_9079_a.cpp ]
           [ thread-run test_9079_b.cpp ]
+ #[ thread-run clang_main.cpp ]
 
     ;
 


Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk