Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Qt: Существует ли метод завершения текущего потока?
|
|||
|---|---|---|---|
|
#18+
Я создал задачи- объекты, унаследованные от QRunnable и скормил их QThreadPool. Представим, что один из потоков не может дальше продолжать работать: например, не читается файл или память не выделяется... Как грохнуть только этот поток, оставив процесс и всё приложение в живых? Не хочется все методы потока делать функциями с возвращаемым значением, характеризующим наличие/отсутствие ошибок (и методы методов и методы методов методов....). Надо аналог terminate(), который грохнет только текущий поток. Какие паттерны программирования применяют в подобных ситуациях? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.11.2017, 23:54 |
|
||
|
Qt: Существует ли метод завершения текущего потока?
|
|||
|---|---|---|---|
|
#18+
return? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2017, 02:27 |
|
||
|
Qt: Существует ли метод завершения текущего потока?
|
|||
|---|---|---|---|
|
#18+
maytonreturn? Беда в том, что вложенность методов может быть достаточно глубокой, и надо этот return "поднимать" в стеке вызовов до метода run(). Поэтому чтобы не запутаться необходимо ВСЕ возвращаемые значения использовать в качестве сигнала наличия/отсутствия ошибки. Не хочется так извращать логику программы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2017, 10:36 |
|
||
|
Qt: Существует ли метод завершения текущего потока?
|
|||
|---|---|---|---|
|
#18+
Тебе надо грохнуть поток по твоему условию? Или разбираться в причинах почему он падает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2017, 10:57 |
|
||
|
Qt: Существует ли метод завершения текущего потока?
|
|||
|---|---|---|---|
|
#18+
AlekseySQL... Не хочется все методы потока делать функциями с возвращаемым значением, характеризующим наличие/отсутствие ошибок (и методы методов и методы методов методов....). ... Какие паттерны программирования применяют в подобных ситуациях? Удаляют паттерны "лень", "руки из жо.." и делают как надо. Читаем "методы обработки ошибок в программах" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2017, 11:06 |
|
||
|
Qt: Существует ли метод завершения текущего потока?
|
|||
|---|---|---|---|
|
#18+
Хотя методы убивания потока и есть, так делать не надо. Это вам не ЯС и не Эрланг. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2017, 11:09 |
|
||
|
Qt: Существует ли метод завершения текущего потока?
|
|||
|---|---|---|---|
|
#18+
maytonТебе надо грохнуть поток по твоему условию? Или разбираться в причинах почему он падает? авторПредставим, что один из потоков не может дальше продолжать работать: например, не читается файл или память не выделяется... Что я могу выяснить, если операционная система не предоставила ресурсы? Если поток не может дальше работать, то его нужно просто грохнуть, а его задачу поставить в конец очереди (может к тому времени ОС сможет предоставить ресурсы). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2017, 11:21 |
|
||
|
Qt: Существует ли метод завершения текущего потока?
|
|||
|---|---|---|---|
|
#18+
AlekseySQLmaytonТебе надо грохнуть поток по твоему условию? Или разбираться в причинах почему он падает? авторПредставим, что один из потоков не может дальше продолжать работать: например, не читается файл или память не выделяется... Что я могу выяснить, если операционная система не предоставила ресурсы? Если поток не может дальше работать, то его нужно просто грохнуть, а его задачу поставить в конец очереди (может к тому времени ОС сможет предоставить ресурсы). Изувер вы барин. Убивать работника только за то что вы дали ему кривой инструмент.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2017, 12:15 |
|
||
|
Qt: Существует ли метод завершения текущего потока?
|
|||
|---|---|---|---|
|
#18+
AlekseySQLmaytonreturn? Беда в том, что вложенность методов может быть достаточно глубокой, и надо этот return "поднимать" в стеке вызовов до метода run(). Поэтому чтобы не запутаться необходимо ВСЕ возвращаемые значения использовать в качестве сигнала наличия/отсутствия ошибки. Не хочется так извращать логику программы. Кинуть исключение, а наверху его поймать и return. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2017, 17:38 |
|
||
|
Qt: Существует ли метод завершения текущего потока?
|
|||
|---|---|---|---|
|
#18+
Dima TКинуть исключение, а наверху его поймать и return. К этому варианту пока склоняюсь, настораживает только разбухание кода от обработки всех возможных исключений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2017, 18:48 |
|
||
|
Qt: Существует ли метод завершения текущего потока?
|
|||
|---|---|---|---|
|
#18+
AlekseySQLDima TКинуть исключение, а наверху его поймать и return. К этому варианту пока склоняюсь, настораживает только разбухание кода от обработки всех возможных исключений. Зачем их много плодить? Это только для самых-самых критичных случаев, т.е. когда "что-то пошло не так". Я не любитель исключений, но если они есть в используемой библиотеке, то с ними надо как-то жить. Классический совет: ловить только те исключения что в состоянии обработать. На самом верху можно ловить все и делать запись в лог, чтобы прогу совсем не остановило необработанное исключение. В общем не надо все ошибки переводить на исключения, только критические. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2017, 19:07 |
|
||
|
Qt: Существует ли метод завершения текущего потока?
|
|||
|---|---|---|---|
|
#18+
Dima T, Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2017, 21:09 |
|
||
|
Qt: Существует ли метод завершения текущего потока?
|
|||
|---|---|---|---|
|
#18+
AlekseySQLmaytonТебе надо грохнуть поток по твоему условию? Или разбираться в причинах почему он падает? авторПредставим, что один из потоков не может дальше продолжать работать: например, не читается файл или память не выделяется... Что я могу выяснить, если операционная система не предоставила ресурсы? Если поток не может дальше работать, то его нужно просто грохнуть, а его задачу поставить в конец очереди (может к тому времени ОС сможет предоставить ресурсы). Тут надо подумать архитектурно. Что за ошибка? Если ОС не может выделить память - то ситуация аварийна ИМХО. Если не память - то прошу прояснить сообществу что за ресурсы имелись в виду. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2017, 22:18 |
|
||
|
Qt: Существует ли метод завершения текущего потока?
|
|||
|---|---|---|---|
|
#18+
Мне одному кажется, что ТС путает поток и какой-то QT-шный объект-обёртку?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2017, 22:33 |
|
||
|
Qt: Существует ли метод завершения текущего потока?
|
|||
|---|---|---|---|
|
#18+
maytonТут надо подумать архитектурно. Что за ошибка? Если ОС не может выделить память - то ситуация аварийна ИМХО. Если не память - то прошу прояснить сообществу что за ресурсы имелись в виду. Все системные вызовы. В топике приведены примеры с памятью и обращение к файловой системе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2017, 09:38 |
|
||
|
Qt: Существует ли метод завершения текущего потока?
|
|||
|---|---|---|---|
|
#18+
Появился вопрос по исключениям: Функция http://en.cppreference.com/w/cpp/io/basic_istream/getline порождает исключения: автор Exceptions failure if an error occurred (the error state flag is not goodbit) and exceptions() is set to throw for that state. If an internal operation throws an exception, it is caught and badbit is set. If exceptions() is set for badbit, the exception is rethrown. , поэтому если их не перехватить где-нибудь выше по стеку, то приложение будет закрыто. Но зачем тогда устанавливаются флаги failbit и badbit? Ведь тогда их анализировать бессмысленно: в случае ошибки приложение будет закрыто и до анализа флагов программа просто не дойдет... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2017, 11:19 |
|
||
|
Qt: Существует ли метод завершения текущего потока?
|
|||
|---|---|---|---|
|
#18+
AlekseySQL, предлагаю почитать учебник по языку с++ по самым по основам ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2017, 11:29 |
|
||
|
Qt: Существует ли метод завершения текущего потока?
|
|||
|---|---|---|---|
|
#18+
SiemarglAlekseySQL, предлагаю почитать учебник по языку с++ по самым по основам По этому вопросу читал Страуструпа. Там говорится, что неперехваченные исключения вызывают terminate() и выполнение программы останавливается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2017, 12:08 |
|
||
|
Qt: Существует ли метод завершения текущего потока?
|
|||
|---|---|---|---|
|
#18+
AlekseySQLSiemarglAlekseySQL, предлагаю почитать учебник по языку с++ по самым по основам По этому вопросу читал Страуструпа. Там говорится, что неперехваченные исключения вызывают terminate() и выполнение программы останавливается. верно. тогда просто нужно внимательнее вчитаться в ссылку по getline и работу исключений с стд::потоками ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2017, 16:57 |
|
||
|
Qt: Существует ли метод завершения текущего потока?
|
|||
|---|---|---|---|
|
#18+
Siemarglверно. тогда просто нужно внимательнее вчитаться в ссылку по getline и работу исключений с стд::потоками В описании getline написано, что генерирует два исключения: failure и exceptions и при этом устанавливаются биты. Для перехвата исключения надо указать его тип, поэтому характер ошибки после перехвата и так ясен. Единственное что могу придумать для чего могут использоваться биты- при перехвате всех исключений с помощью конструкции catch(...). Можно не писать загадками? Зачем перекидываться бестолковыми сообщениями? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2017, 17:14 |
|
||
|
Qt: Существует ли метод завершения текущего потока?
|
|||
|---|---|---|---|
|
#18+
AlekseySQL, failure if an error occurred (the error state flag is not goodbit) and exceptions() is set to throw for that state. If an internal operation throws an exception, it is caugh t and badbit is set. If exceptions() is set for badbit, the exception is rethrown. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.11.2017, 17:23 |
|
||
|
Qt: Существует ли метод завершения текущего потока?
|
|||
|---|---|---|---|
|
#18+
SiemarglAlekseySQL, failure if an error occurred (the error state flag is not goodbit) and exceptions() is set to throw for that state. If an internal operation throws an exception, it is caugh t and badbit is set. If exceptions() is set for badbit, the exception is rethrown. Насколько я понял загадки продолжаются. Желаю вам удачи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.11.2017, 08:30 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=39548326&tid=2018046]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
159ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
| others: | 12ms |
| total: | 259ms |

| 0 / 0 |
