Тёмный

Qt уроки #30. QThread - создание потоков в Qt 

EVILEG
Подписаться 4,1 тыс.
Просмотров 9 тыс.
50% 1

Опубликовано:

 

2 окт 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 17   
@Виктор-ч8р
@Виктор-ч8р 4 года назад
не подскажете почему эту строчку "threadA.start(); " подчеркивает красным? хотя сделал все по видео
@SergMirny_yt
@SergMirny_yt Год назад
А можно ли как-то остановить внешний поток? Пример есть у меня класс, который переносится в параллельный поток, он там вычисляет довольно длительное время, могу ли я его прервать? Например я понял, что то, что он читает не правильно и мне нужно подправить какие-то исходные данные, и соответственно мне нет необходимости ждать окончания просчета. thread_class.terminate() не работает почему-то. Конечно есть вариант в самом классе добавить сеттер некоего флага, и на каждое действие выполнять проверку состояния этого флага, но это какой-то лютый костыль
@alexesipenko3413
@alexesipenko3413 8 лет назад
Отсюда habrahabr.ru/post/150274/ Qt Bradley T.Hughes утверждает, что наследование QThread только для выполнения кода класса в отдельном потоке - идея в корне неправильная: «QThread was designed and is intended to be used as an interface or a control point to an operating system thread, not as a place to put code that you want to run in a thread. We object-oriented programmers subclass because we want to extend or specialize the base class functionality. The only valid reasons I can think of for subclassing QThread is to add functionality that QThread doesn’t have, e.g. perhaps providing a pointer to memory to use as the thread’s stack, or possibly adding real-time interfaces/support. Code to download a file, or to query a database, or to do any other kind of processing should not be added to a subclass of QThread; it should be encapsulated in an object of it’s own.» «Класс QThread создан и предназначен для использования в качестве интерфейса к потокам операционной системы, но не для того, чтобы помещать в него код, предназначенный для выполнения в отдельном потоке. В ООП мы наследуем класс для того чтобы расширить или углубить функциональность базового класса. Единственное оправдание для наследования QThread, которое я могу представить, это добавление такой функциональности, которой в QThread не существует, например, передача указателя на область памяти, которую поток может использовать для своего стека, или, возможно, добавление поддержки интерфейсов реального времени. Загрузка файлов, работа с базами данных, и подобные функции не должны присутствовать в наследуемых классах QThread; они должны реализовываться в других объектах»
@EVILEG
@EVILEG 8 лет назад
+Alex Esipenko Да. В видео я и говорил, что это не совсем правильный вариант подхода. Но его тоже нужно знать.
@alexesipenko3413
@alexesipenko3413 8 лет назад
+Евгений «EVILEG» Легоцкой Оу, тогда сорри. Видео еще не смотрел, только статью глянул.
@EVILEG
@EVILEG 8 лет назад
+Alex Esipenko Да всё пучком )) Qt Bradley T.Hughes говорит об этом значительно более чётко. В статье и в видео тоже это сказано, но я не расставил акценты так, как это сделал Bradley T.Hughes.
@tivelGames
@tivelGames 7 лет назад
А как сделать 2 потока, но чтобы в каждом потоке была своя функция? Например в потоке А = сложение чисел от 1 до 100, Б = сложение от 101 до 200 а потом бы складывал их
@evgenyan5452
@evgenyan5452 9 месяцев назад
Легко
@imperitum3585
@imperitum3585 8 лет назад
Полезный видос. Есть один вопрос к тебе. Ты в QT OpenGL разбираешься?
@EVILEG
@EVILEG 8 лет назад
+Bullet_VIP [Game channel] Не. С этой частью Qt у меня не было опыта работы пока ещё.
@ДимаБочаров-н8ы
@ДимаБочаров-н8ы 8 лет назад
Чтото информации за раз мало. Где инфа о взаимодействии между потоками?
@EVILEG
@EVILEG 8 лет назад
+Дима Бочаров Всё относительно. Если всё учитывать, то будет много информации.
@ГеворкАрзуманян
Спасибо за уроки. Очень полезно. Планируется ли урок с gstreamer + Qt под windows ?
@EVILEG
@EVILEG 8 лет назад
+Геворк Арзуманян Пожалуйста. Вообще у меня нет чёткого плана по урокам, но обычно описываю лишь те моменты, с которыми работаю, а gstreamer я не работал. Так что, не факт, что будет такой урок.
@ГеворкАрзуманян
+Евгений «EVILEG» Легоцкой Спасибо за ответ
@ДимаБочаров-н8ы
@ДимаБочаров-н8ы 8 лет назад
Кстати, вместо того чтобы 2 минуты рассказывать про то как не надо делать, что сложно осознать, проще было сделать 3 класса, унаследованных от QThread и для каждого создать экземпляр и запустить!
@EVILEG
@EVILEG 8 лет назад
+Дима Бочаров Странный комментарий. В скринкасте и так дан класс, наследованный от QThread, и создано 3 экземпляра этого класса, количество классов сути не меняет. И да! - приложение даже оказывается запущенным в примере. Плюсом дана информация о том, есть ли смысл в подобном наследовании.
Далее
Провал со стеклянным хлебом…
00:41