Russian Qt Forum

Qt => Вопросы новичков => Тема начата: Alf от Сентябрь 26, 2013, 13:00



Название: Почему sleep() в потоке блокирует предшествующий вывод в консоль ?
Отправлено: Alf от Сентябрь 26, 2013, 13:00
Консольное приложение.
Класс Thread унаследован от QThread. Функция void run() реализована следующим образом:

Код:
void Thread::run()
{
    QTextStream out(stdout);
    out << "Thread HANDLE is " << currentThreadId();

    while (true) {
        sleep(1);
    }
}

Код:
int main(int argc, char *argv[])
{
QCoreApplication app(argc, argv);

Thread thread;
thread.start();

app.exec();

return 0;
}

Почему в данном случае в консоль не выводится нужная информация ?


Название: Re: Почему sleep() в потоке блокирует предшествующий вывод в консоль ?
Отправлено: Alex Custov от Сентябрь 26, 2013, 14:14
потому что буферизируется. Пробуй out.flush();


Название: Re: Почему sleep() в потоке блокирует предшествующий вывод в консоль ?
Отправлено: Alf от Сентябрь 26, 2013, 14:33
Точно, помогло ! Спасибо !