12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- // (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;
- }
|