std::basic_syncbuf<CharT,Traits,Allocator>::emit
bool emit(); |
Атомарно передаёт весь ожидающий вывода текст в обёрнутый поток.
Все вызовы emit(), передающие символы в один и тот же объект буфера обёрнутого потока, выполняются в общем порядке, в котором каждый вызов emit() синхронизируется-с последующими вызовами emit() в этом общем порядке, даже если эти вызовы выполняются через разные экземпляры std::basic_syncbuf/std::basic_osyncstream. На практике это означает, что emit() захватывает блокировку, однозначно связанную с объектом обёрнутого потока: например, она может храниться в статической хеш-таблице, где в качестве ключа используется адрес обёрнутого потока.
Если с момента последнего вызова emit() был вызван sync, функция также сбрасывает буфер обёрнутого потока, вызывая для него pubsync().
Параметры
(нет)
Возвращаемое значение
true, если выполняются все следующие условия:
- обёрнутый поток существует (указатель на буфер обёрнутого потока не равен null)
- все символы из временного хранилища успешно переданы в обёрнутый поток
- вызов
pubsync(), если он был запрошен, также завершился успешно.
В противном случае возвращает false.
Примечания
Обычно вызывается деструктором или оператором перемещающего присваивания владеющего объекта std::basic_osyncstream либо функцией std::basic_osyncstream::emit.
Пример
См. также
уничтожает basic_osyncstream и передаёт его внутренний буфер (открытая функция-член std::basic_osyncstream<CharT,Traits,Allocator>) |
|
вызывает emit() для базового basic_syncbuf, чтобы передать его внутренние данные в конечное место назначения (открытая функция-член std::basic_osyncstream<CharT,Traits,Allocator>) |
|
создаёт объект basic_syncbuf (открытая функция-член) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/io/basic_syncbuf/emit