ьтатам одного потока смешаться

Автор admin Четверг, 25 июня 2009 11:32

ьтатам одного потока смешаться с результатами другого. А это означает, что при написании приложений необходимо синхронизировать операции ввода-вывода. Чтобы решить проблему, нужно сначала сгенерировать весь выходной пакет, а затем решить, когда отправить его на консоль. В одном из простых решений информация записывается в ostringstream, а затем один объект с мутексом синхронизирует вывод между всеми программными потоками: //: Cll:Display.h // Предотвращение коллизий при выводе #ifndef DISPLAYJH #define DISPLAYJH #include #include #include “zthread/Mutex.h” #include “zthread/Guard.h” class Display { // Один объект совместно используется ZThread::Mutex iolock; // всеми потоками ввода-вывода, public: void output(std::ostringstream& os) { ZThread::Guard g(iolock); std: :cout « os.strO; } }: #endif // DISPLAYJH ///:- B этом варианте стандартные операторные функции operator«() определены заранее, а объект строится в памяти с применением знакомых потоковых операторов. Когда задача хочет вывести сообщение, она создает временный объект ostringstream и использует его для постр


Комментарии закрыты.