Namespaces
Variants
Actions

std::basic_osyncstream

From cppreference.com
< cpp‎ | io
 
 
 
 
Defined in header <syncstream>
template<

    class CharT,
    class Traits = std::char_traits<CharT>,
    class Allocator = std::allocator<CharT>

> class basic_osyncstream : public std::basic_ostream<CharT, Traits>
(since C++20)

The class template std::basic_osyncstream is a convenience wrapper for std::basic_syncbuf. It provides a mechanism to synchronize threads writing to the same stream.

It can be used with a named variable:

{
    std::osyncstream synced_out(std::cout); // synchronized wrapper for std::cout
    synced_out << "Hello, ";
    synced_out << "World!";
    synced_out << std::endl; // flush is noted, but not yet performed
    synced_out << "and more!\n";
} // characters are transferred and std::cout is flushed

as well as with a temporary:

std::osyncstream(std::cout) << "Hello, " << "World!" << '\n';

It provides the guarantee that all output made to the same final destination buffer (std::cout in the examples above) will be free of data races and will not be interleaved or garbled in any way, as long as every write to that final destination buffer is made through (possibly different) instances of std::basic_osyncstream.

Typical implementation of std::basic_osyncstream holds only one member: the wrapped std::basic_syncbuf.

cpp/io/ios basecpp/io/basic ioscpp/io/basic ostreamstd-basic osyncstream-inheritance.svg

Inheritance diagram

Several typedefs for common character types are provided:

Defined in header <syncstream>
Type Definition
std::osyncstream std::basic_osyncstream<char>
std::wosyncstream std::basic_osyncstream<wchar_t>

Contents

[edit] Member types

Member type Definition
char_type CharT[edit]
traits_type Traits; the program is ill-formed if Traits::char_type is not CharT.[edit]
int_type Traits::int_type[edit]
pos_type Traits::pos_type[edit]
off_type Traits::off_type[edit]
allocator_type Allocator
streambuf_type std::basic_streambuf<CharT, Traits>
syncbuf_type std::basic_syncbuf<CharT, Traits, Allocator>

[edit] Member functions

constructs a basic_osyncstream object
(public member function) [edit]
assigns a basic_osyncstream object
(public member function) [edit]
destroys the basic_osyncstream and emits its internal buffer
(public member function) [edit]
obtains a pointer to the underlying basic_syncbuf
(public member function) [edit]
obtains a pointer to the final destination stream buffer
(public member function) [edit]
calls emit() on the underlying basic_syncbuf to transmit its internal data to the final destination
(public member function) [edit]

Inherited from std::basic_ostream

Member functions

Formatted output
inserts formatted data
(public member function of std::basic_ostream<CharT,Traits>) [edit]
Unformatted output
inserts a character
(public member function of std::basic_ostream<CharT,Traits>) [edit]