MK-Gii Ответов: 1

Несоответствие спящего потока C++


Привет, ребята.

Превосходная странная проблема, которую я получил с c++... надеюсь, что кто-нибудь может помочь мне понять первопричину...
Код:
for(int i = 0; i < 10; i++) {
    std::cout << i << " ";
    std::this_thread::sleep_for(std::chrono::milliseconds(1000));
}


Теперь - дело в том, что если я запускаю это в windows - результат приходит, как и ожидалось - каждую секунду число печатается в консоль. И - при попытке сделать это на машине ubuntu он ничего не показывает и через 10 секунд мгновенно печатает все цифры.

Есть идеи, почему он не печатает выходные данные каждую секунду, как в windows?

Что я уже пробовал:

Попробовал построить и запустить это в CodeLite с интегрированным терминалом и без него. Пробовал компилировать и запускать с помощью простого терминала вручную (пробовал c++11 и c++14).

1 Ответов

Рейтинг:
4

jeron1

Попробуйте добавить std::flush в строку cout.

std::cout << i << " " << std::flush;


MK-Gii

Фантастический. Спасибо:) Это было быстро, просто и изящно :)

jeron1

Пожалуйста. Быстрый поиск "stdout buffering" поможет вам получить подробную информацию о том, почему он делал то, что делал.