В гипотетическом театре,
он называется Мьютекс , если только один человек позволяет смотреть пьесу
, он называется Семафор , если Количество зрителей позволяет смотреть спектакль. Если кто-либо покинет Театр во время спектакля, то другой человек может посмотреть спектакль.
он называется CountDownLatch , если никто не имеет права входить до тех пор, пока каждый человек не покинет театр. У каждого человека есть свобода воли покинуть театр.
это называется Cyclicbarrier , если театр не запустится, пока каждый человек не войдет в театр. Здесь шоумен не может начать шоу, пока все люди не войдут и не схватят место. Как только воспроизведение закончится, тот же барьер будет применяться для следующего шоу
Здесь человек - это Нить, игра - это ресурс.
На основании справки, полученной из вопроса, связанного с Джоном:
#include <boost/iostreams/tee.hpp>
#include <boost/iostreams/stream.hpp>
#include <fstream>
#include <iostream>
using std::ostream;
using std::ofstream;
using std::cout;
namespace bio = boost::iostreams;
using bio::tee_device;
using bio::stream;
int main()
{
typedef tee_device<ostream, ofstream> TeeDevice;
typedef stream<TeeDevice> TeeStream;
ofstream ofs("sample.txt");
TeeDevice my_tee(cout, ofs);
TeeStream my_split(my_tee);
my_split << "Hello, World!\n";
my_split.flush();
my_split.close();
}