GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
std::basic_osyncstream::basic_osyncstream(3) C++ Standard Libary std::basic_osyncstream::basic_osyncstream(3)

std::basic_osyncstream::basic_osyncstream - std::basic_osyncstream::basic_osyncstream


basic_osyncstream( streambuf_type* buf, const Allocator& a ); (1)
explicit basic_osyncstream( streambuf_type* buf ); (2)
basic_osyncstream( std::basic_ostream<CharT, Traits>& os, const Allocator& a ); (3)
explicit basic_osyncstream( std::basic_ostream<CharT, Traits>& os ); (4)
basic_osyncstream( std::basic_osyncstream&& other ) noexcept; (5)


Constructs new synchronized output stream


1-4) constructs the private member std::basic_syncbuf using the buffer and the
allocator provided, and initializes the base class with a pointer to the member
std::basic_streambuf.
5) Move constructor. Move-constructs the std::basic_ostream base and the
std::basic_syncbuf member from the corresponding subobjects of other, then calls
set_rdbuf with the pointer to the newly-constructed underlying std::basic_syncbuf to
complete the initialization of the base. After this move constructor,
other.get_wrapped() returns nullptr and destruction of other produces no output.


buf - pointer to the std::basic_streambuf that will be wrapped
os - reference to a std::basic_ostream, whose rdbuf() will be wrapped
a - the allocator to pass to the constructor of the member std::basic_syncbuf
other - another osyncstream to move from

// Run this code


#include <string_view>
#include <syncstream>
#include <iostream>
#include <thread>


void worker(const int id, std::ostream &os) {
std::string_view block;
switch (id) {
default: [[fallthrough]];
case 0: block = "██"; break;
case 1: block = "▓▓"; break;
case 2: block = "▒▒"; break;
case 3: block = "░░"; break;
}
for(int i = 1; i <= 50; ++i) {
os << block << std::flush;
}
os << std::endl;
}


int main() {
std::cout << "Synchronized output should not cause any interference:" << std::endl;
{
auto scout1 = std::osyncstream{std::cout};
auto scout2 = std::osyncstream{std::cout};
auto scout3 = std::osyncstream{std::cout};
auto scout4 = std::osyncstream{std::cout};
auto w1 = std::jthread{worker, 0, std::ref(scout1)};
auto w2 = std::jthread{worker, 1, std::ref(scout2)};
auto w3 = std::jthread{worker, 2, std::ref(scout3)};
auto w4 = std::jthread{worker, 3, std::ref(scout4)};
}


std::cout << "\nLack of synchronization may cause some interference on output:" << std::endl;
{
auto w1 = std::jthread{worker, 0, std::ref(std::cout)};
auto w2 = std::jthread{worker, 1, std::ref(std::cout)};
auto w3 = std::jthread{worker, 2, std::ref(std::cout)};
auto w4 = std::jthread{worker, 3, std::ref(std::cout)};
}
}


Synchronized output should not cause any interference:
░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒
▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓
████████████████████████████████████████████████████████████████████████████████████████████████████


Lack of synchronization may cause some interference on output:
████▓▓██▒▒▒▒▓▓██░░▒▒██░░▒▒░░░░▒▒░░▓▓▒▒██░░████████████▓▓██████▓▓▒▒▓▓██░░████▓▓▓▓██▒▒░░░░░░░░▓▓░░▓▓██▒▒▒▒▒▒▒▒▓▓██▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░▒▒▒▒░░▒▒▒▒▒▒▒▒▒▒▓▓▒▒▒▒▒▒▒▒▒▒▒▒██░░░░░░░░▓▓▓▓▓▓▓▓▓▓▓▓▓▓░░▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓████████▓▓▓▓▓▓▓▓▓▓▓▓░░▓▓▓▓
▒▒▒▒██░░██████████████████████████░░░░░░░░░░░░░░██░░▒▒░░░░░░██████████████████
▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒░░▒▒░░░░░░░░░░░░░░░░░░░░░░░░░░░░▒▒▒▒▒▒
░░░░░░


constructor constructs a basic_syncbuf object
(public member function of std::basic_syncbuf<CharT,Traits,Allocator>)

2022.07.31 http://cppreference.com

Search for    or go to Top of page |  Section 3 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.