LINUX.ORG.RU

Объект от QObject со своим QThread - нормуль?


0

1

Раньше я использовал QThread неправильно, наследовался от него (это тоже хорошо, но как выяснилось не для моего типичного применения), но при этом активно использовал сигналы-слоты для объектов в треде.

Теперь я просто создаю объект, наследованный от QObject, и затем просто moveToThread его.

Но я пошел дальше, кладу внутри своего объекта (тот что от QObject-а) просто QThread my_thread; и в конструкторе просто помещаю этот объект в этот my_thread.

Вопрос: можно ли так?

Насколько это вообще допустимо? Не делаю ли я ошибку? В документации для этого показывают пример, где внешний контролирующий объект содержит QThread, а другой рабочий класс уже в него помещается в нем. А я хочу обойтись без лишнего внешнего объекта, т.к. управлять объектом в потоку будут уже другие классы в проекте...

Не делаю ли я ошибку?

Я думаю, что ошибку ты сделал раньше, когда начал программировать на Qt вместо того, чтобы программировать на Си++.

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

Подожду более умных комментов :) Qt = супер! И qmake - няяя.

В принципе, я вижу только одну проблему - такие потоки я не смогу контролировать извне, отслеживать что с ними. Но мне это в принципе и не надо. Я создаю объект и он живет всё время работы программы.

Просто может есть еще какие-то траблы, которые тихо притаились?

I-Love-Microsoft ★★★★★
() автор топика
Последнее исправление: I-Love-Microsoft (всего исправлений: 1)

Но я пошел дальше, кладу внутри своего объекта (тот что от QObject-а) просто QThread my_thread; и в конструкторе просто помещаю этот объект в этот my_thread.

QObject умер, что будет с тредом?

UVV ★★★★★
()
Ответ на: комментарий от tailgunner

Тебе не надо отвечать в треде по Qt, пока ты не рассказал мне отличия демона от системной службы... ;)

UVV ★★★★★
()
Ответ на: комментарий от I-Love-Microsoft

Подожду более умных комментов :) Qt = супер! И qmake - няяя.

Qt, безусловно, неплох. Но вот насчёт qmake - довольно смелое заявление. Если проект чисто кутешный, то вопросов нет, а если надо что-нибудь пофункциональнее, то лучше использовать cmake.

UVV ★★★★★
()
Ответ на: комментарий от UVV

QObject умер, что будет с тредом?

Такого я еще не встречал... Что может случиться с QObject? Ну а если так - то да, есть проблема.

Надо бы подумать, может в самом деле стоит сделать класс для управления и в нем держать эти треды, чтобы всё по феншую было...

I-Love-Microsoft ★★★★★
() автор топика

Думаю, что объект не должен решать, будет ли он в отдельном треде или нет (это не касается внутренних объектов).

А потому его должны явно перенести извне в отдельный тред.

Chaser_Andrey ★★★★★
()
Ответ на: комментарий от UVV

Тебе не надо отвечать в треде по Qt,

Надо или нет - это другой вопрос.

пока ты не рассказал мне отличия демона от системной службы... ;)

Что именно тебя интересует?

tailgunner ★★★★★
()
Ответ на: комментарий от UVV

Ненадо ляля. У меня во всех спп проектах qmake. Третий год - полёт нормальный.

nanoolinux ★★★★
()
Ответ на: комментарий от Chaser_Andrey

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

Понял, перенести в отдельный тред извне. Сделаю как в доках пишут - класс-контроллер. В общем, тема решена - ответ найден.

I-Love-Microsoft ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.