Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/4: Рейтинг темы: голосов - 4, средняя оценка - 4.75
29 / 29 / 16
Регистрация: 06.03.2013
Сообщений: 159

Остановка рабочей функции потока

08.08.2016, 12:10. Показов 864. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
День добрый. Задумался над таким вот вопросом. Допустим, у меня есть две функции get(StopObj obj) и process(StopObj obj).
Эти две функции я запускаю из нескольких потоков. Сам StopObj obj это некий сигнал функциям, что работу стоит прервать. Делают ли так вообще? При этом достаточно ли в StopObj добавить флаг типа bool, по которому эти функции будут определять нужно ли преждевременно завершать работу?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
08.08.2016, 12:10
Ответы с готовыми решениями:

Правильная остановка потока
Есть поток, в которым выполняется запрос. При закрытии формы, нужно останавливать выполнение этого потока. Как правильно это сделать? ...

Остановка потока onClose формы
Добрый день, господа. Есть форма и дополнительный поток, проводящий вычисления и выводящий графики на форму realtime. Есть код,...

Выход (остановка) функции
Где в этой функции нужно поставить break или goto что бы после нахождения файла 1.txt происходило (прерывание) остановка функции? ...

5
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
08.08.2016, 13:07
Цитата Сообщение от xTr1m Посмотреть сообщение
Сам StopObj obj это некий сигнал функциям, что работу стоит прервать. Делают ли так вообще?
Да. Его еще называют State Object.
0
29 / 29 / 16
Регистрация: 06.03.2013
Сообщений: 159
08.08.2016, 14:16  [ТС]
Ага. Единственное, я написал функции, куда передаётся объект по значению. Правильнее ведь, как я понимаю, передавать по ссылке?
0
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
08.08.2016, 14:55
Цитата Сообщение от xTr1m Посмотреть сообщение
Правильнее ведь, как я понимаю, передавать по ссылке?
Ну в общем случае да. Хотя если объект не слишком большой то разницы заметной не будет.

Единственное что, я думаю Вы понимаете, что передавать объект по значению (копированием) в функцию можно только в том случае, если внутри функции не нужно изменять его состояние...
0
29 / 29 / 16
Регистрация: 06.03.2013
Сообщений: 159
08.08.2016, 15:05  [ТС]
Или лучше по значению передать, чтобы исключить возможность изменения состояния в процессе выполнения рабочей функции?

p.s. и еще такой вопрос? достаточно ли просто иметь поле bool, которое атомарно проверять? или нужно предусммотреть нечто по-хитрее?
0
1943 / 1768 / 825
Регистрация: 23.01.2014
Сообщений: 6,230
08.08.2016, 17:44
Цитата Сообщение от xTr1m Посмотреть сообщение
Или лучше по значению передать, чтобы исключить возможность изменения состояния в процессе выполнения рабочей функции?
Да как хотите) Обычно делают const T&. Тут и по ссылке передача, и изменять нельзя.

Цитата Сообщение от xTr1m Посмотреть сообщение
p.s. и еще такой вопрос? достаточно ли просто иметь поле bool, которое атомарно проверять? или нужно предусммотреть нечто по-хитрее?
Ну смотря как. Если это просто "сигнал" для остановки выполнения, то наверное нет смысла. А если Вы его будете туда сюда щелкать (включать, отключать), то можно мьютекс какой-нибудь замутить)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
08.08.2016, 17:44
Помогаю со студенческими работами здесь

Остановка потока по таймеру
Суть вопроса в следующем. В основной программе запускается рабочий поток, в котором в бесконечном цикле ожидается появление прерывания от...

Остановка потока
Есть программа, которая при клике левой кнопкой мыши создает поток, который выводит на экран координаты + переменную i. Как сделать, чтобы...

Остановка потока по нажатию клавиши
Проблема такая: я создал 2 потока, в одном работает счетчик, в другом выводит значение. Нужно по нажатию клавиши пробел остановить оба...

Остановка второго потока останавливает также первый поток по непонятной причине
Изучаю потоки и по ходу дела экспериментирую с ними в Visual Studio. Накидал код, который в первом потоке приостанавливает и возобновляет...

Остановка функции - c++
С помощью какой команды можно остановить функцию внутри другой функции с помощью оператора Switch. Если есть возможность поставить на паузу...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru