2016-12-14 14 views
2

В моей программе мне нужно выполнить какое-то действие по истечению таймера (timer_create()). Я хочу выполнить это действие, создав новый поток. Поэтому я хочу знать, можно ли создать поток в обработчиках сигналов?Создание потока в обработчиках сигналов

+0

Вызов 'timer_create()' с 'struct sigevent' с' .sigev_notify = SIGEV_THREAD'. – EOF

ответ

2

Обработчики сигналов могут не вызывать функции без повторного входа. Вы должны посмотреть на свою документацию o/s, но создание потока вряд ли будет повторным. В linux man -s7 signal дает вам список функций безопасного вызова, который не содержит ничего из pthread.

Действительно, все обработчики сигналов должны делать это, чтобы установить флаг для основного кода или потока обработки сигнала для чтения. Более того, это рискованно.