Поделитесь мыслями насчет такой схемы:
void (*variable_handler)(args);
void global_handler(args) { (*variable_handler)(args); }
И кто-то другой (тред) как-то на лету меняет variable_handler. Т.е. для разных variable_handler действия для определенных сигналов будут разные, ну а смена хендлера будет очень быстрой, если это нужно.
Вот, и вторая схема:
pthread_key thread_specific_handler_key;
void global_handler(args) { void (*thread_h)() = pthread_getspecific(thread_specific_handler_key); (*thread_h)(args); }
Это тоже, насколько я понимаю, в Линуксе работать будет очень быстро. При рождении тредов нужно, конечно, устанавливать его хендлер. Но насколько корректны обе схемы? Жду мнений :)