
Denis
16.03.2017
11:15:51
А память не потечет7

Tema
16.03.2017
11:16:17

Denis
16.03.2017
11:17:07
signal.h
И как из обработчика правильно кинуть исключение?

Google

babysitter
16.03.2017
11:17:24
нельзя кидать исключение из обработчика, там стек не гарантируется правильный, это не совсем вызов функции

Denis
16.03.2017
11:18:06
Как будет выглядеть стек после long jump?

Tema
16.03.2017
11:19:11
ass fire triggered
зачем сразу исключение
просто ловиш сигинт, делаеш то чт охочеш

Denis
16.03.2017
11:19:49
Почитай то, что я писал выше

Tema
16.03.2017
11:19:50
отправаляеш подсистеме запрос на остановку
работы

Плюшка
16.03.2017
11:19:55
а если я хочу поймать сигинт и выкинуть исключение?

Denis
16.03.2017
11:20:06

Tema
16.03.2017
11:20:28
та которая в данный момент у тебя делает работу

Google

Denis
16.03.2017
11:20:31
У меня все в одном потоке

Tema
16.03.2017
11:20:32
которую ты хотел стопнуть
сделай в нескольких

Denis
16.03.2017
11:20:46
Не хочу

Tema
16.03.2017
11:20:48
или это требование
нехочуха
тогда никак

Denis
16.03.2017
11:21:01
Зачем пихать потоки там, где они не нужны?

Tema
16.03.2017
11:21:06
ты не можеш делать работу и следить за сигналами
что то одно

Denis
16.03.2017
11:21:40

Tema
16.03.2017
11:22:11

Denis
16.03.2017
11:22:23
А ты умный

Tema
16.03.2017
11:22:32
ну тебе треды не нужны а исключения нужны
докупим ещё 16 гигов опиративы

Denis
16.03.2017
11:23:13
Наркоман какой-то

Anton
16.03.2017
11:25:03
Moar!

Aleksei
16.03.2017
11:25:07
Остановись в дебагере в обработчике сигнала - посмотри на стек

Google

Vyacheslav
16.03.2017
11:26:40
http://stackoverflow.com/questions/17766550/ctrl-c-interrupt-event-handling-in-linux
Если у тебя по сути бесконечный цикл - можно использовать флаг
Как в примере

Denis
16.03.2017
11:28:41
У меня не бесконечный цикл, там вычисления со множеством объектов, у которых нужно вызвать деструкторы

Tema
16.03.2017
11:29:22

Denis
16.03.2017
11:29:33
Аргументируй

Tema
16.03.2017
11:30:04
ну что ещё за множества объектов
что ещё за цикл в 1 потоке

Denis
16.03.2017
11:30:17
Множество = много

Tema
16.03.2017
11:30:21
тем более

Aleksei
16.03.2017
11:30:27

Pepe
16.03.2017
11:30:29

Tema
16.03.2017
11:30:51
тока всё это делается в треаде

Denis
16.03.2017
11:31:11

Tema
16.03.2017
11:31:19
и ты можеш обработчиком сигнала из главной треады менять значение работы в треад воркере

Aleksei
16.03.2017
11:31:24
да хочет он в мэйне это делать - на здоровье

Anatoly
16.03.2017
11:34:50
@bladdon Концепция сигналов такова, что бы в их хандлерах выставлять флаги и регировать на них вот в таких бесконечных циклах как твой например. throw в плюсах совсем иная концепция которая не может быть использованна в рамках POSIX signal handler. Попробуй пожалуйста найти способ проверять значения флага в момент вычисления, пусть и с задержкой но функция SIGINT, будет выполнять твою логику корректно.

Denis
16.03.2017
11:35:51
А если у меня вызывается какая-то долгая функция из библиотеки, код которой я менять не могу, вообще никак?

Google

Anatoly
16.03.2017
11:36:34
боюсь что юзкейс для таких задач это всегда process/threads
что бы их можно было контроллировать

Tema
16.03.2017
11:36:50

Anatoly
16.03.2017
11:37:06
ну там наверное время весьма приличное
ждать можно, если время исполнения не критично

Denis
16.03.2017
11:37:26

Tema
16.03.2017
11:37:29

Admin
ERROR: S client not available

Tema
16.03.2017
11:37:49

Anatoly
16.03.2017
11:37:58
убить, стопнуть, рестартнуть

Tema
16.03.2017
11:38:10
while(m_work)
{
logika
}

Anatoly
16.03.2017
11:38:15
распечатать состояние
что ты хочешь?

Tema
16.03.2017
11:38:27
по сигналу делаеш m_work = false

Denis
16.03.2017
11:39:00
что ты хочешь?
У меня шелл. Я хочу, чтобы текущая команда завершилась по ctrl+c, как в питоне

Anatoly
16.03.2017
11:39:51
то есть процесс вообще прекратил работу?

Denis
16.03.2017
11:40:20
Не процесс, а вычисление. Процесс просит ввести следующую команду

Anatoly
16.03.2017
11:41:13
понятно, тогда да, прибивай

Tema
16.03.2017
11:41:23

Google

Tema
16.03.2017
11:41:32
когда твой с++ немного питон

Плюшка
16.03.2017
11:43:03
це с++29

Антон
16.03.2017
11:46:11
2029 год. Компилятор C++ пишет код за тебя.

Плюшка
16.03.2017
11:46:22
3329*

Stanislav
16.03.2017
11:54:26
https://twitter.com/alenacpp/status/842174970025328640
?

Tema
16.03.2017
11:56:43

Stanislav
16.03.2017
11:57:02
какой то код))

Tema
16.03.2017
11:57:25
ну тогда ту тникакой магии, обычные темплейты ?

Плюшка
16.03.2017
11:57:35

Vyacheslav
16.03.2017
12:04:37

Дед Пегас
16.03.2017
12:08:25
Итак
Нас тысяча.

Alex Фэils?︙
16.03.2017
12:09:06

Tema
16.03.2017
12:09:08
больше не будет?

Denis
16.03.2017
12:09:16

Alex Фэils?︙
16.03.2017
12:09:30
Поздравляем! Вы 1000-й посетитель нашего чата!

Tema
16.03.2017
12:10:09
1000-й покупатель