Разработка многопоточных приложений в Qt. Hello world

Автор Nadezhda Belousova
Разработка многопоточных приложений в Qt. Hello world

Итак создадим проект просто какой-то applications with console Application мы будем пользоваться консольными для того чтобы понять как использовать потоки вообще-то назовем его здесь оставим по умолчанию так-с генерировал ся некоторой прототип приложения которые шаблон давайте сделаем так чтобы он запускался терминале нашей среды разработки попробуем смотреть, что происходит запускаем есть какой-то Application output который ничего не делает.

Обратите внимание, что сейчас приложение работает консольная потому, что запущен цикл обработки событий рюкзак аппликация. Хорошо давайте для начала сделаем какой-нибудь заготовку для того чтобы видеть, что приложение делает. Ну например трейлер будем делать некоторую паузу.

Удобнее всего воспользоваться классом тест тест секунды подключим естественно тест тест так не забудем добавить в ют плюс равно тестлиб отлично хорошо и напечатаем какой-нибудь текст на консолях у яблок будем ремонтировать переменную.

Посмотрим, что получилось неверное использование кулебак потому, что мы не подключили. Леди баг запуск вот видно, что у нас приложение генерирует последовательность. Циферки наш текущее приложение выполняет вот эти вот операции в потоке — это не очень удобно. Например если мы захотим печатать не только цифру, но ещё что-нибудь. Или например разные счётчики с разной скоростью будут работать — это будет неудобно нам сложно будет придумать такую логику которая в одном потоке — это сможет сделать поэтому. Давайте попытаемся создать простецки класс. Наследник Cut Red и запустим ту же самую деятельность в несколько потоков, но придумав каким образом их различить. Каким образом — это делается создаем новый класс. Ну допустим будет называться он. Принт тренд так базовый класс у него будет Cut Red можно включить клуб объект так добавили. Хорошо давайте посмотрим на его объявления. Да отлично. Вот у него такой конструктор давайте сделаем следующие давайте сделаем циринг добавим. Мустанг — это какой-то префикс будет у нас и инт какой-нибудь тайм-аут с которым мы будем печатать — это отлично. Давайте соответственно поменяем прототип нашей функция — это удалим. Ну и собственно заведём префикс заведём таймаут собственно реализуемые в конструкторе префикс равно префикс м тайм аут таймаут так заготовка готова. Мы можем создавать такие класса теперь для того чтобы наш класс стал настоящим потоком нам надо определить функцию ран она у нас protected выглядит она воет ран без аргументов наряжает отлично давайте мы её реализуем мопс и можно просто перенести наш кот который мы имели вот здесь вот сюда — это будет тоже некоторые цикл Forever слип возьмём теперь тайм-аут. Ну и будем печатать какой-то префикс префикс. У нас тоже есть — это префикс так. Ну и конечно придётся перенести qt Status Bar вот таким образом попробуем — это собрать для начала. Сайфулла так что-то тут не работает. Давайте посмотрим, что не работает кутырев потому, что инклуд uTorrent так ещё раз. Ну вот. Хорошо давайте попытаемся посмотреть как — это собралась да — это собралась частенько запускать пока ещё рано требуется создать два объекта класса принтеры для этого мы включим его наш основной файл создадим два экземпляра этого. Пупс parent Thread так два экземпляра создадим A и B ну так они не захотят создаваться. Потому, что им, что передать в. Конструктор Давайте этот будет у нас называется. А и будет работать с интервалом в 300 миллисекунд, а этот будет называться и ну давайте: поставим фото префикс для вывода я тут будет работать например с интервалом в 600 миллисекунд попробуем — это снова собрать. Так, что там этот забыли, а потому, что у нас приложение есть уже такое моего сейчас переименуем соберём всё хорошо и надо запустить а.. Старт Б. Старт собрали запустили мы видим, что поток. А и. Б выводят что-то в консоль, но видно, что а выводит почаще ее счетчик, а он как-то быстрее меняется можно установить и посмотреть. Да вот в текущий момент b33, а уже 67, но и соответственно. Мы видим, что здесь вот, а повторяется всегда — это одинаково потому, что могут двигаться интервалы, но мы получаем более-менее регулярно и распределение событий вывода. А и. Б на консоль.

0 комментариев
0

Читайте также