|
223 / 213 / 80
Регистрация: 26.04.2013
Сообщений: 972
|
|||||||||||
Корректно убить поток21.10.2015, 09:42. Показов 3890. Ответов 27
Метки нет (Все метки)
Пусть имеется поток thrdWork, который обрабатывает большие данные. В результате этой работы в памяти каждый раз сохраняются наиболее лучшие результаты. Т.к. эти результаты перезаписываются, то вывод их в файл возможен по окончанию обработки данных, что не реально долго (возможно и сутки, если не дольше). Поэтому я хочу выводить результаты по нажатию на клавишу (скажем мне будет достаточно того, что thrdWork уже нашел), но при этом дальнейшая обработка мне не нужна, т.е. поток нужно убить раньше времени. Я пришел к 2 решениям:
1 решение: Кликните здесь для просмотра всего текста
и 2 способ: Кликните здесь для просмотра всего текста
Какой метод более корректен или есть решение получше,
0
|
|||||||||||
| 21.10.2015, 09:42 | |
|
Ответы с готовыми решениями:
27
Можно ли убить поток (pthread) сигналом (kill()) ? Можно ли убить поток зная лишь то что он запускается последним? Сокеты и QThread - как корректно завершить поток |
|
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
|
|
| 21.10.2015, 10:12 | |
|
Никакой. Нельзя прерывать поток принудительно. Ты же не знаешь, на какой стадии он прервётся, может, и данные будут некорректные после этого. Используй средства синхронизации, чтобы поток сам завершался при определённых условиях.
0
|
|
|
223 / 213 / 80
Регистрация: 26.04.2013
Сообщений: 972
|
|
| 21.10.2015, 10:38 [ТС] | |
|
0
|
|
|
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
|
|
| 21.10.2015, 11:06 | |
|
Дело не в глобальности, а в целостности. Например, 2 переменные запишет, а третью не успеет - она будет старое значение содержать и т. п.
1
|
|
|
223 / 213 / 80
Регистрация: 26.04.2013
Сообщений: 972
|
|
| 21.10.2015, 11:12 [ТС] | |
|
Согласен. Тогда каждый раз буду опрашивать переменную, отвечающую за завершение потока.
0
|
|
|
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
|
|
| 21.10.2015, 11:32 | |
|
Если под Линуксом, то там есть pthread_cancel, вызывающий процесс схожий с броском исключения из вызванной в потоке cancellation point функции (без cancellation point не заработает). Под gcc этот "процесс" вроде как в исключение и преобразуется. Но вообще изврат, так как по сути выходит что сишные функции начинают плеваться исключениями.
0
|
|
|
Native x86
6853 / 3787 / 1024
Регистрация: 13.02.2013
Сообщений: 11,861
|
|
| 21.10.2015, 11:34 | |
|
0
|
|
|
223 / 213 / 80
Регистрация: 26.04.2013
Сообщений: 972
|
|
| 21.10.2015, 11:42 [ТС] | |
|
0
|
|
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|
| 21.10.2015, 20:05 | |
|
никак.
единственный способ потоку корректно завершиться - умереть естественной смертью. обычно делают так: потоки у себя в каком то цикле крутятся, и проверяют неккий атомарный флажок. если true, значит хотят закрыть лавочку снаружи. и поток корректно брякается из своей функции.
0
|
|
|
Native x86
6853 / 3787 / 1024
Регистрация: 13.02.2013
Сообщений: 11,861
|
||
| 22.10.2015, 17:08 | ||
|
0
|
||
|
Native x86
6853 / 3787 / 1024
Регистрация: 13.02.2013
Сообщений: 11,861
|
||
| 22.10.2015, 17:28 | ||
|
У вас есть другое мнение? Пожалуйста, высказывайтесь.
0
|
||
| 22.10.2015, 17:44 | |
|
При использовании volatile в многопоточной среде никто ничего не гарантирует.
Более подробно смотрите cv (const and volatile) type qualifiers,Concurrency: Atomic and volatile in C++11 memory model То что вы говорите это хаки завязанные на реализацию bool, volatile в конкретных компиляторах на конкретных архитектурах.
0
|
|
|
Native x86
6853 / 3787 / 1024
Регистрация: 13.02.2013
Сообщений: 11,861
|
||
| 22.10.2015, 18:05 | ||
|
0
|
||
| 22.10.2015, 18:20 | |||
|
0
|
|||
|
Native x86
6853 / 3787 / 1024
Регистрация: 13.02.2013
Сообщений: 11,861
|
||||
| 22.10.2015, 18:41 | ||||
|
0
|
||||
| 22.10.2015, 19:02 | |||||
|
0
|
|||||
|
Native x86
6853 / 3787 / 1024
Регистрация: 13.02.2013
Сообщений: 11,861
|
||||
| 23.10.2015, 12:26 | ||||
|
Что касается алениной информации о возможной неатомарности BOOL, то это, не имеет ни малейшего значения. Будь запись хоть сто раз не атомарной, все равно момент, когда переменная из "ноль" превращается в "не ноль", атомарен по определению.
0
|
||||
|
|
||
| 27.10.2015, 18:34 | ||
|
См. Архитектура многопоточного приложения, Нужно ли синхронизировать доступ к переменной из двух потоков? Кстати в boost есть interupt() для прерывания.
0
|
||
| 27.10.2015, 18:34 | |
|
Помогаю со студенческими работами здесь
20
Убить поток в адаптере
Убить спящий поток Как убить поток в CountDownTimer? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Налог на собак: https:/ / **********/ gallery/ V06K53e
Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf
Пост отсюда. . .
|
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop?
Ниже её машинный перевод.
После долгих разбирательств я наконец-то вернула себе. . .
|
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод
Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод.
Thinkpad X220 Tablet —. . .
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|