ご存知のように、シグナル ハンドラで何かを行うのは、割り込みのようなコンテキストで実行されるため、非常に悪いことです。シグナル ハンドラが呼び出されたときに、さまざまなロック (malloc() ヒープ ロックを含む!) が保持される可能性は十分にあります。
そのため、シグナルメカニズムを使用せずにスレッドセーフタイマーを実装したいと考えています。
どのようにできるのか?
申し訳ありませんが、実際には、スレッドセーフに関する回答は期待していませんが、スレッドセーフな Unix または Linux でのタイマーの実装に関する回答は期待していません。