Я пытался понять тонкости взаимодействия потоков POSIX и сигналов POSIX. В частности, меня интересуют:
- Как лучше всего контролировать, в какой поток доставляется сигнал (при условии, что это не фатально)?
- Как лучше всего сообщить другому потоку (который действительно может быть занят), что сигнал прибыл? (Я уже знаю, что использовать переменные условия pthread из обработчика сигналов - плохая идея.)
- Как я могу безопасно обрабатывать передачу информации о том, что сигнал поступил в другие потоки? Должно ли это происходить в обработчике сигналов? (Я вообще не хочу убивать другие потоки; мне нужен гораздо более тонкий подход.)
Для справки о том, зачем мне это нужно, я исследую, как преобразовать пакет TclX для поддержки потоков или разделить его и, по крайней мере, сделать некоторые полезные части, поддерживающие потоки. Сигналы - одна из тех частей, которые вызывают особый интерес.