Форум программистов, компьютерный форум CyberForum.ru

C++

Войти
Регистрация
Восстановить пароль
 
xTr1m
29 / 29 / 8
Регистрация: 06.03.2013
Сообщений: 151
#1

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

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

День добрый. Задумался над таким вот вопросом. Допустим, у меня есть две функции get(StopObj obj) и process(StopObj obj).
Эти две функции я запускаю из нескольких потоков. Сам StopObj obj это некий сигнал функциям, что работу стоит прервать. Делают ли так вообще? При этом достаточно ли в StopObj добавить флаг типа bool, по которому эти функции будут определять нужно ли преждевременно завершать работу?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.08.2016, 12:10     Остановка рабочей функции потока
Посмотрите здесь:

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

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

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

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

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

Остановка потока, в котором вызвана синхронная функция ввода вывода - Boost C++
Имется запущенный поток boost:thread. В нем вызван синхронная операция работы с портом read_some. Все работает хорошо до момента когда...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
pav1uxa
1788 / 1628 / 622
Регистрация: 23.01.2014
Сообщений: 5,906
Завершенные тесты: 1
08.08.2016, 13:07     Остановка рабочей функции потока #2
Цитата Сообщение от xTr1m Посмотреть сообщение
Сам StopObj obj это некий сигнал функциям, что работу стоит прервать. Делают ли так вообще?
Да. Его еще называют State Object.
xTr1m
29 / 29 / 8
Регистрация: 06.03.2013
Сообщений: 151
08.08.2016, 14:16  [ТС]     Остановка рабочей функции потока #3
Ага. Единственное, я написал функции, куда передаётся объект по значению. Правильнее ведь, как я понимаю, передавать по ссылке?
pav1uxa
1788 / 1628 / 622
Регистрация: 23.01.2014
Сообщений: 5,906
Завершенные тесты: 1
08.08.2016, 14:55     Остановка рабочей функции потока #4
Цитата Сообщение от xTr1m Посмотреть сообщение
Правильнее ведь, как я понимаю, передавать по ссылке?
Ну в общем случае да. Хотя если объект не слишком большой то разницы заметной не будет.

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

p.s. и еще такой вопрос? достаточно ли просто иметь поле bool, которое атомарно проверять? или нужно предусммотреть нечто по-хитрее?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.08.2016, 17:44     Остановка рабочей функции потока
Еще ссылки по теме:

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

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

return в функции потока - C++
Куда возвращается значение, указанное в return функции созданного потока?

Ошибка в функции потока - C++ Builder
В общем, не могу понять в чем моя ошибка, суть заключается в том, чтобы написать программу слежения за автобусами, каждый автобус это...

Передача потока по параметру функции - C++
Доброго времени суток. Есть пара вопросов :) Допустим у нас имеется функция открытия файла: int open_file() { char...

Ожидание выполнения функции, вызванной из потока - C++ WinAPI
Задача в том, что мне нужно посчитать за сколько времени запустится и удалится не приостановленный поток из которого я вызываю свою...


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

Или воспользуйтесь поиском по форуму:
pav1uxa
1788 / 1628 / 622
Регистрация: 23.01.2014
Сообщений: 5,906
Завершенные тесты: 1
08.08.2016, 17:44     Остановка рабочей функции потока #6
Цитата Сообщение от xTr1m Посмотреть сообщение
Или лучше по значению передать, чтобы исключить возможность изменения состояния в процессе выполнения рабочей функции?
Да как хотите) Обычно делают const T&. Тут и по ссылке передача, и изменять нельзя.

Цитата Сообщение от xTr1m Посмотреть сообщение
p.s. и еще такой вопрос? достаточно ли просто иметь поле bool, которое атомарно проверять? или нужно предусммотреть нечто по-хитрее?
Ну смотря как. Если это просто "сигнал" для остановки выполнения, то наверное нет смысла. А если Вы его будете туда сюда щелкать (включать, отключать), то можно мьютекс какой-нибудь замутить)
Yandex
Объявления
08.08.2016, 17:44     Остановка рабочей функции потока
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru