Подскажите, кто знает за поточность: если я из объекта xxx,

наследуемого от QThread, шлю сигналы объекту yyy, который я создаю в конструкторе xxx с помощью new yyy, причем я шлю эти сигналы в переопределенном методе run(), и шлю их последовательно в цикле внутри run-а, но объект yyy их получает как то хаотично и выполняет вразнобой в итоге, на выходе такая белиберда получается. Насколько я помню, если я соединяю сигнал из потока со слотом не из этого потока, они moc-ом преобразуются в события. Как блин мне добиться того, чтобы мои сигналы выполнялись строго в необходимой последовательности? Выручайте братцы.

11 ответов

13 просмотров

Попробуй Qt::QueuedConnection, если не используешь

Если обьект создается в конструкторе класса наследуемого от qthread, то не значит ли это что класс принадлежит тому же потоку?)

TheDoctor
Если обьект создается в конструкторе класса наслед...

Нет, QThread - это класс-обёртка над тредом. Его конструктор вызывается в том же треде, где создан объект, а сл-но все объекты созданные в конструкторе, принадлежат первому треду

enum Qt::ConnectionType ?

По идее последовательный вызов сигналов в треде сводится к последовательному вызову слотов в ином треде, если установлен флаг QueuedConnection (ну или стоит auto по умолчанию), хотя об э

Александр-К@&#©^ Автор вопроса
qualifier
enum Qt::ConnectionType ?

Это никак не поможет, у меня поток вызывает не "свои слоты", то есть тип соединения всегда будет Qt::QueuedConnection, если использовать Qt::DirectConnection, то он выкинет ошибку что отправитель и получатель в разных потоках.

По идее корректный вариант moveToThread после создания объекта ... и видимо объект созданный при таком способе в конструкторе xxx попадет вместе с ним в один поток ...

Александр-К@&#©^ Автор вопроса
Mikhail Litvinov
По идее корректный вариант moveToThread после созд...

Пробовал, все равно бесовщина творится. Что только не пробовал сегодня с этими потоками делать, все равно возникает ситуация, когда в потоке происходит вызов слота другого потока(через отправку сигнала), то возникает ситуация, когда код в слоте еще не выполнился, и второй слот вызывается параллельно уже выполняемому. Пробовал это гасить через QMutex, если использовать нерекурсивный мьютекс, поток вообще виснет к черту, с рекурсивным мьютексом работает, но проскакивает мой баг.

Александр К@&#©^
Пробовал, все равно бесовщина творится. Что только...

Тут есть предположение что успеет .... я бы думал в сторону Сигнаг данные готовы, забираем, считаем .. сигнал данные готовы

Александр-К@&#©^ Автор вопроса
Mikhail Litvinov
Тут есть предположение что успеет .... я бы думал ...

я в одном потоке шлю запись в modbusTCP в другой поток, в другом эта запись происходит

Похожие вопросы

Обсуждают сегодня

Всем привет. Подскажите, почему не меняется значение поля при переключении сайта?
Alexander Peterikov
11
Можно ли загрузить скрипт py в бота чтобы он работал по нему? как это сделать?
huskadam #RCC Фанат? @hitlerpvp
13
'frakturBold' => ['𝖆', '𝖇', '𝖈', '𝖉', '𝖊', '𝖋', '𝖌', '𝖍', '𝖎', '𝖏', '𝖐', '𝖑', '𝖒', '𝖓', '𝖔', '𝖕', '𝖖', '𝖗', '𝖘', '𝖙', '𝖚', '𝖛', '𝖜', '𝖝', '𝖞', '𝖟', '𝕬', '𝕭', '𝕮', '𝕯'...
Roma
4
Добрый день, не подскажите, если в OC-V3 поменять страндартную директорию /storage/ на /storage2/ - не будет сильно много проблем ?
Max Dubovsky
32
Ребят, а за скок можно впарить анон чат с апишкой и веб админкой ?
Eugene Неелов
15
Цвет аватарки с буквой же зависит от айди? Как может быть такое, что этот цвет поменялся?
Lencore
2
Приветствую друзья, подскажите сколько в среднем стоит на данный момент создать тг бота который будет как магазин? Показывать ассортименты доставлять заказы и тд? Все по станд...
Eugene
3
@dblackCat Привет. Это же твой плагин? https://octobercms.com/plugin/catdesign-productbundle
Alexey Yakimov
5
Добрый день! Кто-нибудь знает как подключить твиг в контроллеры плагина?
Николай Афанасенко
5
Ты просто гитлеровскую эстетику плохо понимаешь. Он же всё под Цезаря делал. А это как бы запрещённый приём в политике. Пиджаки они зачем все носят? Чтобы показать что они тип...
Ivan Kropotkin
4
Карта сайта