powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / C++ [игнор отключен] [закрыт для гостей] / Qt: передача сообщения в поток GUI
8 сообщений из 33, страница 2 из 2
Qt: передача сообщения в поток GUI
    #40031015
Barlone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov

BarloneУ того же QThread есть например метод setPriority, который работает под windows, а под
линуксом ничего не делает

А теперь самое главное по ссылке: "This function was introduced in Qt 4.1.", что чертовски
далеко от "писалось".
Так и "когда-то давно у Qt были проблемы с windows" чертовски далеко от "Qt несовместимо с WinAPI по определению"
...
Рейтинг: 0 / 0
Qt: передача сообщения в поток GUI
    #40031016
Barlone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav

Но вот если вспомнить функцию _beginthread(). Дело в том, что ::CreateThread() ничего не знает про CRT и потоки созданные с помощью ::CreateThread() не совсем корректно потом работают с Си-рантаймом. Но тут я что-то подзабыл.
Не то чтобы "не совсем корректно потом работают", просто при завершении такого потока, если из него были вызовы некоторых функций crt, утечет маленький кусочек памяти, который должен освобождаться в _endthreadex(). Он же утечет, если завершить поток вызовом ExitThread(), даже созданный _beginthreadex(). Это на самом деле может быть проблемой, если постоянно работающий сервис в большом количестве плодит потоки.
...
Рейтинг: 0 / 0
Qt: передача сообщения в поток GUI
    #40031021
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
Barlone
пропущено...
Да ну. Что конкретно в Qt несовместимо с std? Вот например https://doc.qt.io/qt-5/containers.html#stl-style-iterators
qHash() для std::pair есть. В QVector есть методы fromStdVector, toStdVector. В QMap - toStdMap. Для QString тоже есть toStdString.

Они имеют ввиду "я конечно не экономист, но точно чувствую гнилое здесь дело, лажа какая то зарыта" — как в экранизации Пелевина. В том плане, что в сложных вопросах межпоточного взаимодействия там действительно могут быть проблемы.

Сами прогеры часто усложняют там где не надо.
А в топиках Qt сложности оффтоп.
"Сложнее всего в мире достигнуть простоты — это крайняя граница опыта и последнее усилие гения". © George Sand.
...
Рейтинг: 0 / 0
Qt: передача сообщения в поток GUI
    #40031023
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Barlone

Это на самом деле может быть проблемой, если постоянно работающий сервис в большом количестве плодит потоки.

Обычно счас пул потоков используют. Проблема нивелируется.
...
Рейтинг: 0 / 0
Qt: передача сообщения в поток GUI
    #40031240
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov

petravПоток timeSetEvent() обслуживает работу с оборудованием, неограниченное время работы. И
желательно в мягком реалтайме.

И зачем тогда в нём таймер? Там должен быть QNanoSleep, QWaitFor или что-то в этом роде.

Таймер там что бы жить во все глаза.

Таких штук как QWaitFor там просто нет — для интерфейсов к оборудованию. Их придётся реализовывать самому. И внутри этих реализаций в большинстве случаев тоже будет таймер. QNanoSleep сложно применим, поскольку время ожидания часто неизвестно. Да и вообще подвисание в ожидании чего-то недопустимо, потому что пока ждёшь чего-то одного нужно реагировать на что-то другое. Или эмулировать работу другого оборудования. Там целая поэма.

На каждую нитку логики выделить отдельный поток и в них делать wait() — кардинально усложнится архитектура обеспечивающая потокобезопасность. А точный миллисекундный таймер — решение простое и красивое.
...
Рейтинг: 0 / 0
Qt: передача сообщения в поток GUI
    #40031344
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
А точный миллисекундный таймер — решение простое и красивое.
Это смотря что вы пишите - прикладной код или драйвер с точки зрения архитектуры.
На уровне драйвера пишите что хотите.
На прикладном уровне есть класс таймера от Qt.
И не усложняйте. Вся сложность внутри драйвера.
...
Рейтинг: 0 / 0
Qt: передача сообщения в поток GUI
    #40031345
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav,
Можно счас протокол к оборудованию притащить. Потом асинхронность\синхронность. И ещё много чего.
...
Рейтинг: 0 / 0
Qt: передача сообщения в поток GUI
    #40031389
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Модератор: Шериф - в городе. В городе - порядок.
...
Рейтинг: 0 / 0
8 сообщений из 33, страница 2 из 2
Форумы / C++ [игнор отключен] [закрыт для гостей] / Qt: передача сообщения в поток GUI
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]