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

C++

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

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

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

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

Остановка USB устройств - C++
Здраствуйте. Стоит задача: необходимо написать программу на С++, которая позволяет отследить все процессы и все что с ними связано, которые...

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

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

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

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

При синхронизации функции из потока возникает ошибка: "Out of memory" - C++ Builder
Доброго времени суток. Есть код: //--------------------------------------------------------------------------- void __fastcall...

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

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

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

Цитата Сообщение от xTr1m Посмотреть сообщение
p.s. и еще такой вопрос? достаточно ли просто иметь поле bool, которое атомарно проверять? или нужно предусммотреть нечто по-хитрее?
Ну смотря как. Если это просто "сигнал" для остановки выполнения, то наверное нет смысла. А если Вы его будете туда сюда щелкать (включать, отключать), то можно мьютекс какой-нибудь замутить)
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
08.08.2016, 17:44
Привет! Вот еще темы с ответами:

Имя рабочей станции - C++ Builder
Подскажите как можно получить имя рабочей станции?

Координаты рабочей области TChart - C++ Builder
Подскажите пожалуйста какие координаты рабочей области компонента TChart ( см. рис) Мне нужно при наведении миши на Сhart выводить...

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

Изменение размеров рабочей области экрана - C++ Builder
Всем доброго времени суток. У меня такой вопрос: Размеры области экрана не занятой полосой задач изменены (исп-я ф-цию...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
08.08.2016, 17:44
Ответ Создать тему
Опции темы

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