#multithreading #posix #kill #signals
#многопоточность #posix #уничтожение #сигналы
Вопрос:
Некоторая информация: мне нужно написать программу, которая управляет некоторыми устройствами (это базовая функциональность). Но я должен написать какую-то систему плагинов, чтобы включить другие пользовательские функции. У меня нет способа контролировать качество исходного кода этих плагинов, поэтому я решил, что создам поток для каждого загруженного плагина, а затем он будет запускаться в своем собственном основном цикле. Я могу перехватывать стандартные исключения C , но проблема в том, что я понятия не имею, как работать с сигналами. Лучшим способом было бы асинхронно отменить поток плагина, чтобы дать ему возможность очистить и освободить ресурс, или просто убить его, но не знаю, как узнать, какой поток вызывает текущий сигнал. Есть ли способ сделать это без явного сохранения текущей информации о потоке в некоторой переменной? Или это совершенно плохая идея, и я должен создать отдельный процесс, а затем запустить плагин?
Ответ №1:
Да, это абсолютно плохая идея. Потоки — это совместная модель программирования, использующая почти все, которая не обеспечивает никакой изоляции. Это просто неподходящий инструмент для этой работы.
Ответ №2:
Я бы использовал традиционный процесс для получения полной изоляции и использовал механизм IPC для связи.