Потоки, Как организовать потоки |
Здравствуйте, гость ( Вход | Регистрация )
Потоки, Как организовать потоки |
ALeXUI |
27.11.2012, 16:11
Сообщение
#1
|
Студент Группа: Участник Сообщений: 19 Регистрация: 30.4.2011 Пользователь №: 2647 Спасибо сказали: 2 раз(а) Репутация: 0 |
Здравствуйте, возникла слдеующая проблема...
Моя программа, прошивает плату по com порту, отправляя определенные пакеты, и если в момент прошивки, зажать гллвное окно или начать его передвигать по рабочему столу, прошивка останавливается, и отменяется платой т.к за определнное время не поступил нужный пакет. В связи с этим возник вопрос как это лучше реализовать? Есть варинат сделать два потока - один будет отвечать за gui (главный виджет который выводит информацию от других классов), и второй, который занимается сборкой и отсылкой пакета. Есть ли ещё какие-нибудь варианты? Много почитал, про потоки, но полной ясности так и нет) Есть не плохой приер в examples (Mandelbrot), там нечто похожее реализовано, но что-то всё равно не совсем ясно. Может подскажите что ещё, возможно на более простом примере. Для лучшего понимания решил попробывать напистаь простую программу, котрая считывает каждую секунду число из файла, и отправляет в главный класс, который выводит все на форму в техтэдит. При зажимании мышкой окна, зависание происходит не сильное, но думаю если организовать все через потоки, его вообще не будет. Не могли бы Вы пояснить, на таком простом примере, как это лучше организовать. Заранее спасибо=) |
|
|
mezmay |
29.11.2012, 21:02
Сообщение
#2
|
Активный участник Группа: Участник Сообщений: 272 Регистрация: 13.7.2009 Из: Ростов-на-Дону Пользователь №: 904 Спасибо сказали: 16 раз(а) Репутация: 1 |
Для этой задачи совсем не обязательно использовать дополнительный поток, если данные у тебя отсылаются в цикле, то можно сделать так:
То есть обрабатывать системные сообщения между отправками пакетов.Но если хочешь освоить потоки, то тебе подойдет другой простой вариант: 1. Создаешь класс, унаследованный от QThread (лучше с помощью встроенного в среду разработки мастера): mythread.h:
mythread.cpp:
Создаешь в основном GUI-потоке объект этого класса:
И запускаешь поток:
Обрати внимание, что поток запускается с помощью метода start(). Ну и время жизни переменной thread должно быть достаточным для выполнения потока Сообщение отредактировал mezmay - 29.11.2012, 23:07 |
|
|
Текстовая версия | Сейчас: 29.11.2024, 2:42 |