Я использую операции ostream::write
и ostream::flush
в многопоточном приложении в следующей последовательности:
// <<-- start time measurement
{
ostream::write();
ostream::flush();
}
//<<-- end time measurement
Проблема заключается в том, что при измерении времени для указанной последовательности я получаю оченькороткое время (~ 10 мсек), но время между входом в поток становится очень большим (~ 400 мсек), только из-за добавления команд ostream::flush
и ostream:::write
.Лишь время от времени я понимаю, что разница во времени становится больше, но я не уверен, что это из-за некоторого переключения контекста.
Я тестирую его на Linux-машине, двухъядерном процессоре.
Это сбивает меня с толку, Я предположил, что обе эти функции блокируют, или же запись фактически выполняется только после fflush
?
РЕДАКТИРОВАТЬ :
только один поток выполняет запись в файл.