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