Russian Qt Forum
Ноябрь 24, 2024, 17:54
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Общие вопросы
>
QThread Qt 3.3.x
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: QThread Qt 3.3.x (Прочитано 4279 раз)
Steven_Orko
Гость
QThread Qt 3.3.x
«
:
Июнь 08, 2007, 10:19 »
В силу необходимости использую такую версию Qt. В ней в классе QThread нет сигнала finished(), который есть в Qt 4, в принципе, по понятным причинам. Однако, мне необходимо узнать о том, что функция потока завершилась именно в тот момент, когда она завершилась. Кто-нибудь делал такое? Для чего это надо... В процессе работы создаю несколько десятков потоков по необходимости. Т.к. каждый объект QThread занимает память, то хочу его удалять после того, как поток завершится, но не знаю, как отследить этот момент.
Цикл
Код:
while (true)
{
}
в отдельном потоке занимает 100% процессорного времени, нужно ставить какие-то QWaitCondition. Вот только как узнать момент, в который надо сигналить?
P.S. ОС Linux, 2.6.x.
Записан
Sergeich
Гость
QThread Qt 3.3.x
«
Ответ #1 :
Июнь 08, 2007, 12:48 »
Попробуй заюзать QApplication::postEvent в конце ф-ции потока
Записан
Steven_Orko
Гость
QThread Qt 3.3.x
«
Ответ #2 :
Июнь 13, 2007, 08:55 »
Попробовал. Эта штука в большинстве случаев работает правильно, но вот нет, нет, да и появится поток, который еще не успел почему-то завершится при обработке данного события ((((((((...
Я решил добавить еще одну синхронизацию, и отслеживать кол-во потоков до выполняемого действия и после... ща попробую, вроде должно сработать. Да, еще эти потоки надоть отсоединить, чтобы ресурсы сразу освобождались по завершению потока.
Записан
Racheengel
Джедай : наставник для всех
Offline
Сообщений: 2679
Я работал с дискетам 5.25 :(
QThread Qt 3.3.x
«
Ответ #3 :
Июнь 13, 2007, 09:37 »
Можно добавить
while (true)
{
...
sleep(100);
}
чтобы 100% времени не отжиралось.
Записан
What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.
COVID не волк, в лес не уйдёт
Steven_Orko
Гость
QThread Qt 3.3.x
«
Ответ #4 :
Июнь 13, 2007, 13:15 »
Ага, тож делал так, но все равно, не есть хорошо, потому что в зависимости от процессора, время занятости тоже довольно сильно варьируется, причем, у меня начиная примерно от 8%.... это не есть хорошо ))))
Записан
Sergeich
Гость
QThread Qt 3.3.x
«
Ответ #5 :
Июнь 13, 2007, 16:39 »
Цитата: "Steven_Orko"
Попробовал. Эта штука в большинстве случаев работает правильно, но вот нет, нет, да и появится поток, который еще не успел почему-то завершится при обработке данного события ((((((((...
Сделай в обработчике событий wait для завершающегося потока, если postEvent стоит в самом конце ф-ции потока, то он должен отработать мгновенно и не тормозить главный событийный цикл.
Записан
Steven_Orko
Гость
QThread Qt 3.3.x
«
Ответ #6 :
Июнь 13, 2007, 17:49 »
Я уже решил проблемму с помощью платформо-зависимого кода... Все равно у меня многопоточный сервер написан с использованием pthreads Linuxa... И использоваться будет только в Linux.
А с wait я играл, в разные места ставил... Твой вариант самый оптимальный оказался ))))) Но мне показалось, что использовать wait не комильфо ))))
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
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 сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...