Re[7]: Убить поток C++ 11
От: monah_tuk Пират http://htrd.su
Дата: 07.04.16 05:31
Оценка: +1
Здравствуйте, Erop, Вы писали:

D>>Можно, ну это уж слишком лихо для временных решений )))

E>Ну вынести говнобиблиотеку в другой процесс, не факт, что плохое решение...
E>Эту дыру они может и заткнут, но вдруг это не последняя ошибка?

Егор, я вас полностью поддерживаю. Если в название чего-то так и хочется добавить приставку "говно...", но волею судеб это необходимо использовать, то стоит озадачиться изоляцией. Как минимум, общение с таким процессом можно организовать при помощи общей памяти и пайпов, последние вполне можно использовать для сигназилирования об эвентах, а так же посадить на мультиплексор (epoll, kqueue или, даже, select). Плюс более правильные средства для убийства подсистемы и рестарта оной с корректной чисткой ресурсов.
Отредактировано 07.04.2016 5:32 monah_tuk . Предыдущая версия .
Re[6]: Убить поток C++ 11
От: Kernan Ниоткуда https://rsdn.ru/forum/flame.politics/
Дата: 07.04.16 07:00
Оценка:
Здравствуйте, dosik, Вы писали:

D>Здравствуйте, Erop, Вы писали:


E>>Ещё можно блокирующую библиотеку в другой процесс форкнуть, и его потом убивать, а синхронизироваться по rpc, например...


D>Можно, ну это уж слишком лихо для временных решений )))

Это самое дельное решение на самом деле и сделать его довольно просто.
Sic luceat lux!
Re: Убить поток C++ 11
От: MasterZiv СССР  
Дата: 08.04.16 13:19
Оценка: :)
Здравствуйте, dosik, Вы писали:

D>И дополню: сгенерит событие самому, заменить библиотеку нельзя. Такое ТЗ.


Убивать нехорошо. Убивать потоки ещё более нехорошо.
Re: Убить поток C++ 11
От: uncommon Ниоткуда  
Дата: 13.04.16 17:33
Оценка:
Здравствуйте, dosik, Вы писали:

Можно сделать так:

* перед вызовом функции из библиотеки в новом потоке делаешь setjmp
* вызываешь функцию, которая блокирует поток
* когда нужно поток завершить, посылаешь потоку signal (например SIGUSR1) с помощью tgkill
* в обработчике сигнала делаешь longjmp в то место, где был вызван setjmp
* после "приземления" в точку setjmp-а устанавливаешь результат в future и выходишь из потока нормальным образом
* profit!
Re[2]: Убить поток C++ 11
От: BulatZiganshin  
Дата: 14.04.16 14:53
Оценка:
Здравствуйте, MasterZiv, Вы писали:

MZ>Убивать нехорошо. Убивать потоки ещё более нехорошо.


у меня всегда были подозрения, что в -17-м веке люди просто не поняли что такое programming style guidelines
Люди, я люблю вас! Будьте бдительны!!!
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.