signal handlers are process global. You cannot install per-thread signal handlers. You could try to be clever and install a signal handler that reads a function pointer with pthread_getspecific as the thread-specific handler for the signal, except that pthread_getspecific is not async-signal-safe. As far as I know, there's no async-signal-safe way to determine what thread you're in, so the only point of delivering a signal to a specific thread is generating EINTR (if SA_RESTART is omitted from sigaction flags) or stalling that thread's progress