Russian Qt Forum
Ноябрь 23, 2024, 03:31
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Многопоточное программирование, процессы
>
Объясните пожалуйста)
Страниц:
1
[
2
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Объясните пожалуйста) (Прочитано 13490 раз)
Old
Джедай : наставник для всех
Offline
Сообщений: 4350
Re: Объясните пожалуйста)
«
Ответ #15 :
Ноябрь 20, 2013, 15:06 »
Так все таки, это ощущение или все работает в одном потоке?
Добавьте отладочный вывод Qt::HANDLE QThread::currentThreadId() [static]
Записан
alexeev
Гость
Re: Объясните пожалуйста)
«
Ответ #16 :
Ноябрь 20, 2013, 15:08 »
Ну ощущение, сложилось из того, что при зажатии запись останавливается, размер файла не изменяется, и структуры данных пропускаются, это точно.
А вот тут можо немного поподробнее с этим не знаком(( (Я об этом Qt::HANDLE QThread::currentThreadId() [static])
Записан
Old
Джедай : наставник для всех
Offline
Сообщений: 4350
Re: Объясните пожалуйста)
«
Ответ #17 :
Ноябрь 20, 2013, 15:13 »
Цитата: alexeev от Ноябрь 20, 2013, 15:08
Ну ощущение, сложилось из того, что при зажатии запись останавливается,
Это похоже на вендопроблему, она останавливает свою очередь событий при перетаскивании окна и с ней останавливаются всё.
Отдельная нитка должна решить проблему.
Цитата: alexeev от Ноябрь 20, 2013, 15:08
А вот тут можо немного поподробнее с этим не знаком(( (Я об этом Qt::HANDLE QThread::currentThreadId() [static])
Добавьте:
Код
C++ (Qt)
qDebug
(
)
<<
QThread
::
currentThreadId
(
)
;
В главную нитку и в метод Write и увидите в каких потоках что выполняется. Если id будут одинаковые, то все выполняется в одном потоке, иначе в разных.
Записан
alexeev
Гость
Re: Объясните пожалуйста)
«
Ответ #18 :
Ноябрь 20, 2013, 15:22 »
0x1760 Main Method
0x16c8 Write Method
Id у потоков разные
Записан
Old
Джедай : наставник для всех
Offline
Сообщений: 4350
Re: Объясните пожалуйста)
«
Ответ #19 :
Ноябрь 20, 2013, 15:22 »
Цитата: alexeev от Ноябрь 20, 2013, 15:22
Id у потоков разные
Значит нитки разные, что и требовалось.
Записан
alexeev
Гость
Re: Объясните пожалуйста)
«
Ответ #20 :
Ноябрь 20, 2013, 15:23 »
Тогда, почему моя задача не решилась, я полностью был уверен что поможет =(
Записан
Old
Джедай : наставник для всех
Offline
Сообщений: 4350
Re: Объясните пожалуйста)
«
Ответ #21 :
Ноябрь 20, 2013, 15:29 »
Цитата: alexeev от Ноябрь 20, 2013, 15:23
Тогда, почему моя задача не решилась, я полностью был уверен что поможет =(
Так а кто данные производит? Главная нитка? Тогда конечно не поможет.
Нужно весь опрос переносить в новую нитку, а не только запись.
Записан
alexeev
Гость
Re: Объясните пожалуйста)
«
Ответ #22 :
Ноябрь 20, 2013, 15:32 »
Данные с ком порта принимаются в одном классе, в другой пересылаются и обрабатываются, в котором и просиходит создание это объекта Storage.
Записан
Old
Джедай : наставник для всех
Offline
Сообщений: 4350
Re: Объясните пожалуйста)
«
Ответ #23 :
Ноябрь 20, 2013, 15:45 »
Цитата: alexeev от Ноябрь 20, 2013, 15:32
Данные с ком порта принимаются в одном классе, в другой пересылаются и обрабатываются, в котором и просиходит создание это объекта Storage.
Вот нужно, что бы прием был в отдельной нитке. Можно совместить их с обработкой, а можно вообще сделать одну нитку на прием, другую на обработку.
Записан
alexeev
Гость
Re: Объясните пожалуйста)
«
Ответ #24 :
Ноябрь 20, 2013, 15:52 »
А вы Бы не могли объяснить почему не работает? Потому что данные просто послаться не могут в класс который находится в другом потоке, т.к поток главный при зажатии окна блокируется?
Тогда действительно приедтся перенсоить в отдельный поток и получение данных и их обработку(
Записан
Bepec
Гость
Re: Объясните пожалуйста)
«
Ответ #25 :
Ноябрь 20, 2013, 16:40 »
Оконный менеджер Windows при захвате окна за заголовок блокирует поток этого окна. Т.е. поток приостанавливается. Почему и зачем - я вам не отвечу. Я сам задавал этот вопрос, но другого ответа не нашёл.
Как победить? В основном потоке только отрисовка, вся работа в других потоках.
Записан
alexeev
Гость
Re: Объясните пожалуйста)
«
Ответ #26 :
Ноябрь 20, 2013, 16:56 »
А в linux так же?
Записан
Bepec
Гость
Re: Объясните пожалуйста)
«
Ответ #27 :
Ноябрь 20, 2013, 17:32 »
Цитата: Bepec от Ноябрь 20, 2013, 16:40
Оконный менеджер Windows
Никто не жаловался, так что думаю нет, но... Всё зависит от оконного менеджера
Записан
GreatSnake
Джедай : наставник для всех
Offline
Сообщений: 2921
Re: Объясните пожалуйста)
«
Ответ #28 :
Ноябрь 21, 2013, 07:40 »
Цитата: alexeev от Ноябрь 20, 2013, 16:56
А в linux так же?
Нет, т.к. WM на X11 является отдельным приложением.
Записан
Qt 5.11/4.8.7 (X11/Win)
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Объясните пожалуйста)
«
Ответ #29 :
Ноябрь 21, 2013, 09:35 »
Цитата: Bepec от Ноябрь 20, 2013, 16:40
Как победить? В основном потоке только отрисовка, вся работа в других потоках.
А что так побеждается если рисует только главный поток?
Вот у меня сейсас открыт "Resource Monitor". Когда окно таскается, сначала появляется рамка и лишь при отпускании мыши окно передвигается. А во время драга информация в окне обновляется. Когда-то на OSX сам делал такое (несложно, через overlayWindow), не знаю, может сейчас уже в этом нет необходимости. Но что здесь должны быть стандартные решения - и к бабке не ходи, вот только мне они (пока) неизвестны
Записан
Страниц:
1
[
2
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...