std::basic_syncbuf (3) - Linux Manuals
std::basic_syncbuf: std::basic_syncbuf
NAME
std::basic_syncbuf - std::basic_syncbuf
Synopsis
Defined in header <syncstream>
template<
class CharT,
class Traits = std::char_traits<CharT>, (since C++20)
class Allocator = std::allocator<CharT>
> class basic_syncbuf : public std::basic_streambuf<CharT, Traits>
std::basic_syncbuf is a wrapper for a std::basic_streambuf (provided at construction time as a pointer). It accumulates output in its own internal buffer, and atomically transmits its entire contents to the wrapped buffer on destruction and when explicitly requested, so that they appear as a contiguous sequence of characters. It guarantees that there are no data races and no interleaving of characters sent to the wrapped buffer as long as all other outputs made to the same buffer are made through, possibly different, instances of std::basic_syncbuf.
Typical implementation of std::basic_syncbuf holds a pointer to the wrapped std::basic_streambuf, a boolean flag indicating whether the buffer will transmit its contents to the wrapped buffer on sync (flush), a boolean flag indicating a pending flush when the policy is to not emit on sync, an internal buffer that uses Allocator (such as std::string), and a pointer to a mutex used to synchronize emit between multiple threads accessing the same wrapped stream buffer (these mutexes may be in a hash map with pointers to basic_streambuf objects used as keys).
Like other streambuf classes, std::basic_syncbuf is normally only accessed through the corresponding stream, std::osyncstream, not directly.
Two specializations for common character types are also defined:
Defined in header <syncstream>
Type Definition
syncbuf basic_syncbuf<char>
wsyncbuf basic_syncbuf<wchar_t>
Member types
Member type Definition
char_type CharT
traits_type Traits; the program is ill-formed if Traits::char_type is not CharT.
int_type Traits::int_type
pos_type Traits::pos_type
off_type Traits::off_type
allocator_type Allocator
streambuf_type std::basic_streambuf<CharT, Traits>
Member functions
Public member functions
constructor (public member function)
operator= (public member function)
swap (public member function)
destructor (public member function)
emit (public member function)
get_wrapped (public member function)
get_allocator (public member function)
set_emit_on_sync (public member function)
Protected member functions
sync (public member function)
Non-member functions
std::swap(std::basic_syncbuf) specializes the std::swap algorithm
(C++20)
Inherited from std::basic_streambuf
Member types
Member type Definition
char_type CharT
traits_type Traits; the program is ill-formed if Traits::char_type is not CharT.
int_type Traits::int_type
pos_type Traits::pos_type
off_type Traits::off_type
Member functions
destructor destructs the basic_streambuf object
[virtual]
Locales
pubimbue (public member function of std::basic_streambuf<CharT,Traits>)
getloc (public member function of std::basic_streambuf<CharT,Traits>)
Positioning