Russian Qt Forum
Ноябрь 23, 2024, 07:46
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Многопоточное программирование, процессы
>
Потоки при параллельном тестировании оборудования
Страниц:
1
[
2
]
3
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Потоки при параллельном тестировании оборудования (Прочитано 17075 раз)
Bepec
Гость
Re: Потоки при параллельном тестировании оборудования
«
Ответ #15 :
Август 22, 2012, 14:18 »
Что мешает вам самим в потоках проверять время выполнения ваших же функций? Что мешает поставить стража на остановку?
PS или я чего то незнаю, или я чего т не понимаю
Записан
xokc
Птица говорун
Offline
Сообщений: 976
Re: Потоки при параллельном тестировании оборудования
«
Ответ #16 :
Август 22, 2012, 14:27 »
У него висит вовремя выполнения чужих функций из драйверов устройств. Типа readData() - и на ней нитка и умерла. И прервать этот самый readData не получается.
Записан
Odyssey
Гость
Re: Потоки при параллельном тестировании оборудования
«
Ответ #17 :
Август 22, 2012, 14:34 »
xokc прав - примерно это и происходит.
А как реализовать "стража"?
Записан
Bepec
Гость
Re: Потоки при параллельном тестировании оборудования
«
Ответ #18 :
Август 22, 2012, 14:37 »
Страж = булевский флаг, но в зависоне он бесполезен.
Если такая ситуация, то отдельные процессы - это простое и вместе с тем хорошее решение. Никаких забот о мусоре и прочем. Отработал и прислал данные - молодец. Работает 2 часа подряд - убил процесс и усё нормально, выдал ошибку юзверю.
Записан
Odyssey
Гость
Re: Потоки при параллельном тестировании оборудования
«
Ответ #19 :
Август 22, 2012, 14:45 »
Цитата: Igors от Август 22, 2012, 14:14
Цитата: Odyssey от Август 22, 2012, 14:06
Скажите, а если грохнуть класс-наследник delet'ом, а после вызвать какой-нибудь "уборщик"?
Так если он висит то грохнуть можно только из др нитки - верный краш
Да, грохаем из другой нитки. Правда, я надеялся, что в деструкторе можно будет освободить какие-нибудь переменные, порт закрыть, не? ^___^
Вы, кстати, согласны, что при зависе надежнее работать с процессами, а не с потоками?
Записан
Odyssey
Гость
Re: Потоки при параллельном тестировании оборудования
«
Ответ #20 :
Август 22, 2012, 14:46 »
Цитата: Bepec от Август 22, 2012, 14:37
Страж = булевский флаг, но в зависоне он бесполезен.
Если такая ситуация, то отдельные процессы - это простое и вместе с тем хорошее решение. Никаких забот о мусоре и прочем. Отработал и прислал данные - молодец. Работает 2 часа подряд - убил процесс и усё нормально, выдал ошибку юзверю.
Спасибо. Надо будет обмозговать и рассмотреть возможность реализации
Записан
Bepec
Гость
Re: Потоки при параллельном тестировании оборудования
«
Ответ #21 :
Август 22, 2012, 14:55 »
Поток, грохнутый terminate продолжает работать ещё некоторое время. В некоторых случаях (у меня было) он продолжает писать данные, при этом вроде - бы являясь уже убитым
Чуть не поседел, пока искал среди 2 потоков ошибку, а третий, убитый, весело менял им данные и грохал программу
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Потоки при параллельном тестировании оборудования
«
Ответ #22 :
Август 22, 2012, 15:16 »
Цитата: Odyssey от Август 22, 2012, 14:45
Да, грохаем из другой нитки. Правда, я надеялся, что в деструкторе можно будет освободить какие-нибудь переменные, порт закрыть, не? ^___^
Вызов delete не прервет выполнение нитки нормально "зато" искалечит данные к которым она обратится
Цитата: Odyssey от Август 22, 2012, 14:45
Вы, кстати, согласны, что при зависе надежнее работать с процессами, а не с потоками?
Ну это решение просто "потому что нет нормального", всем понятно что оно "через задницу". Я бы прорывался через дуст о котором высокого мнения - хотя и редко его использовал
Записан
xokc
Птица говорун
Offline
Сообщений: 976
Re: Потоки при параллельном тестировании оборудования
«
Ответ #23 :
Август 22, 2012, 15:35 »
Цитата: Igors от Август 22, 2012, 15:16
Я бы прорывался через дуст о котором высокого мнения - хотя и редко его использовал
А чем это может помочь прервать зависший вызов?
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Потоки при параллельном тестировании оборудования
«
Ответ #24 :
Август 22, 2012, 15:46 »
Цитата: xokc от Август 22, 2012, 15:35
Цитата: Igors от Август 22, 2012, 15:16
Я бы прорывался через дуст о котором высокого мнения - хотя и редко его использовал
А чем это может помочь прервать зависший вызов?
Нитка получит исключение и тогда сможет легально выйти
Записан
Bepec
Гость
Re: Потоки при параллельном тестировании оборудования
«
Ответ #25 :
Август 22, 2012, 15:51 »
Эммм... А откуда она получит исключение?
Я просто не особо осведомлён о возможностях "дуста", но как он может по результату проверки (долгое время выполнения и прочая лабуда типа устройство зациклилось) выдать ексцепшн до окончания обработки вызова?
Записан
Odyssey
Гость
Re: Потоки при параллельном тестировании оборудования
«
Ответ #26 :
Август 22, 2012, 15:53 »
Я пока вынужден работать на Qt 4.5.3 под слегка подуродованную версию Линукс (правда, скоро возможен переход на 4.8.2). Boost там работать станет?
И винюсь - пока не очень разобрался в принципе действия. Классу кто-то извне кинет исключение?
Записан
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: Потоки при параллельном тестировании оборудования
«
Ответ #27 :
Август 22, 2012, 16:17 »
Цитата: Odyssey от Август 22, 2012, 15:53
Я пока вынужден работать на Qt 4.5.3 под слегка подуродованную версию Линукс (правда, скоро возможен переход на 4.8.2). Boost там работать станет?
Не знаю. Я просто скопировал фолдер дуста, добавил путь в проект и все, с пол-пинка пошло и на Mac и на Вындоуз.
Цитата: Odyssey от Август 22, 2012, 15:53
И винюсь - пока не очень разобрался в принципе действия. Классу кто-то извне кинет исключение?
Смысл что если нитка получит исключение - она попадет на Ваш catch, там и зачищайтесь и цивильно выходите. Слышал предлагают это даже добавить в стандарт языка - именно по тем соображениям что Вы изложили (борьба с зависоном). Хз, может в С++ 11 уже добавили (где же эрудиты когда они нужны)
Сам не делал (пока не припекло) но присматривался - это есть в Вындоуз (но это 1 платформа) и в дусте.
Записан
xokc
Птица говорун
Offline
Сообщений: 976
Re: Потоки при параллельном тестировании оборудования
«
Ответ #28 :
Август 22, 2012, 16:37 »
Цитата: Igors от Август 22, 2012, 16:17
Цитата: Odyssey от Август 22, 2012, 15:53
Классу кто-то извне кинет исключение?
Смысл что если нитка получит исключение - она попадет на Ваш catch, там и зачищайтесь и цивильно выходите.
Давайте еще раз. Внутри метода run в наследнике QThread "завис" метод read из чужой dll. Завис тупо - без таймаутов и exception. Кто в этом случает сгенерит это самое исключение, которое потом будет передано через boost основному потоку?
Записан
Bepec
Гость
Re: Потоки при параллельном тестировании оборудования
«
Ответ #29 :
Август 22, 2012, 16:41 »
Igors, ловля исключения даже чужого реализована в С++. Это банальный try/catch.
Но оно работает, если в чужом коде кто-то его бросает. А если чужой код завис к чертям, то не поможет уже ничего :/
Записан
Страниц:
1
[
2
]
3
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
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 сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...