2016-12-14 10 views
2

私のプログラムでは、タイマー(timer_create())の有効期限切れに何らかのアクションを実行する必要があります。私は新しいスレッドを生成することでこのアクションを実行したい。シグナルハンドラでスレッドを作成するのが安全かどうかを知りたいのですが?シグナルハンドラでスレッドを作成する

+0

'.sigev_notify = SIGEV_THREAD'の' struct sigevent'で 'timer_create()'を呼び出します。 – EOF

答えて

2

シグナルハンドラは、非リエントラント機能を呼び出すことはできません。 o/sのドキュメントを見るべきですが、スレッドを作成することは再入可能ではありません。 linuxでは、man -s7 signalはpthreadから何も含まれていない安全な関数を呼び出すリストを提供します。

本当にすべてのシグナルハンドラは、メインコードまたはシグナル処理スレッドが読み取るためのフラグを設定する必要があります。それ以上のものは危険です。

関連する問題