![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
zuze |
![]()
Сообщение
#1
|
![]() Участник ![]() ![]() Группа: Участник Сообщений: 211 Регистрация: 4.11.2012 Пользователь №: 3589 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
Пожалуйста помогите мне с вопросами связанные с программой состоящей из двух потоков.
Описание: Программа создаёт окно в котором три кнопки. Первая кнопка запускает и останавливает поток "А". Вторая кнопка запускает и останавливает поток "В". Третья кнопка выход из программы. Поток "А" печатает символ "А". Поток "В" печатает символ "В". Создал проект и в нём сделал 5 файлов с кодом: 1. main.cpp 2. thread.cpp 3. thread.h 4. threaddialog.cpp 5. threaddialog.h Файл main.cpp
Файл thread.cpp
Файл thread.h
Файл threaddialog.cpp
Файл threaddialog.h
1. В "Nokia Qt SDK Win online v1.0.2 (2010)" при запуске терминала выдаётся ошибка "Failed to read env file: No error". 2. В "Nokia Qt SDK Win offline v1.2.1 (2012)" Данные потоков почему-то выводятся в окне "Вывод приложения", аналог окна "Консоль приложения" в старых версиях. Если, запускаешь два потока очень быстро подвисает Qt Creator. Если запускаешь терминал выдаётся ошибка "Failed to read env file: No error". Вопросы: 1. Почему в "Nokia Qt SDK Win online v1.0.2 (2010)" не выводятся результаты потоков и как это поправить? 2. Правильно ли что в "Nokia Qt SDK Win offline v1.2.1 (2012)" результаты потоков выводятся в окне "Вывод приложения", а не в терминале? 3. Подвисает Qt Creator после запуска двух потоков это следствие того что я в программе не сделал синхронизацию потоков? 4. Если есть ещё какие-то нюансы которые я не заметил, напишите пожалуйста? |
|
|
![]() |
Iron Bug |
![]()
Сообщение
#2
|
![]() Профессионал ![]() ![]() ![]() ![]() ![]() Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: ![]() ![]() ![]() |
когда запускаешь дочерний процесс, можно перехватить его поток вывода да вот, как оказалось, в венде это не совсем так. я тут буквально недели две назад на эти грабли наступила: либо дочерний процесс гадит в основную консоль приложения, либо он имеет свою консоль, но его уже нельзя прибить, послав ему Ctrl-C, например. то есть, либо отдельная консоль, либо управление консолью процесса. а вместе - ну никак. вот такая вот кривость. P.S. я говорю именно о процессах, а не о потоках. Сообщение отредактировал Iron Bug - 6.11.2012, 7:47 |
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 4.7.2025, 1:16 |