|
Qt: передача сообщения в поток GUI
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov BarloneУ того же QThread есть например метод setPriority, который работает под windows, а под линуксом ничего не делает А теперь самое главное по ссылке: "This function was introduced in Qt 4.1.", что чертовски далеко от "писалось". Так и "когда-то давно у Qt были проблемы с windows" чертовски далеко от "Qt несовместимо с WinAPI по определению" ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2020, 07:14 |
|
Qt: передача сообщения в поток GUI
|
|||
---|---|---|---|
#18+
petrav Но вот если вспомнить функцию _beginthread(). Дело в том, что ::CreateThread() ничего не знает про CRT и потоки созданные с помощью ::CreateThread() не совсем корректно потом работают с Си-рантаймом. Но тут я что-то подзабыл. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2020, 07:25 |
|
Qt: передача сообщения в поток GUI
|
|||
---|---|---|---|
#18+
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. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2020, 07:57 |
|
Qt: передача сообщения в поток GUI
|
|||
---|---|---|---|
#18+
Barlone Это на самом деле может быть проблемой, если постоянно работающий сервис в большом количестве плодит потоки. Обычно счас пул потоков используют. Проблема нивелируется. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2020, 08:03 |
|
Qt: передача сообщения в поток GUI
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov petravПоток timeSetEvent() обслуживает работу с оборудованием, неограниченное время работы. И желательно в мягком реалтайме. И зачем тогда в нём таймер? Там должен быть QNanoSleep, QWaitFor или что-то в этом роде. Таймер там что бы жить во все глаза. Таких штук как QWaitFor там просто нет — для интерфейсов к оборудованию. Их придётся реализовывать самому. И внутри этих реализаций в большинстве случаев тоже будет таймер. QNanoSleep сложно применим, поскольку время ожидания часто неизвестно. Да и вообще подвисание в ожидании чего-то недопустимо, потому что пока ждёшь чего-то одного нужно реагировать на что-то другое. Или эмулировать работу другого оборудования. Там целая поэма. На каждую нитку логики выделить отдельный поток и в них делать wait() — кардинально усложнится архитектура обеспечивающая потокобезопасность. А точный миллисекундный таймер — решение простое и красивое. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.12.2020, 20:26 |
|
Qt: передача сообщения в поток GUI
|
|||
---|---|---|---|
#18+
petrav А точный миллисекундный таймер — решение простое и красивое. На уровне драйвера пишите что хотите. На прикладном уровне есть класс таймера от Qt. И не усложняйте. Вся сложность внутри драйвера. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2020, 11:30 |
|
Qt: передача сообщения в поток GUI
|
|||
---|---|---|---|
#18+
petrav, Можно счас протокол к оборудованию притащить. Потом асинхронность\синхронность. И ещё много чего. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.12.2020, 11:31 |
|
|
start [/forum/topic.php?fid=57&msg=40031021&tid=2017277]: |
0ms |
get settings: |
11ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
36ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
54ms |
get tp. blocked users: |
2ms |
others: | 16ms |
total: | 150ms |
0 / 0 |