リエントラント
しかし、pthread_mutex_init()によるミューテックスの初期化時にPTHREAD_MUTEX_NORMALを設定した属性を使用していて、リエントラントな割り込みハンドラがこの関数を呼び出す場合、2つ目の割り込みがこの関数実行中に発生すると、二度目の呼び出しはミューテックスを獲得できず、永久に停止(デッドロック)する。割り込みサービスでは他の割り込みをディセーブルするので、システム全体がハングアップすることになる。
デッドロックを回避するには、ミューテックス初期化時に、同一スレッドによる複数回のロックを許可するPTHREAD_MUTEX_RECURSIVEを設定した属性を使用する必要がある。ただし、PTHREAD_MUTEX_RECURSIVEを設定したからといって、pthread_mutex_lock()およびpthread_mutex_unlock()が非同期シグナル安全になるとは限らない。なお、ミューテックス初期化時にPTHREAD_MUTEX_INITIALIZERを使用すると、PTHREAD_MUTEX_DEFAULTを設定した既定の属性が使用されることになり、デッドロックに関しては未定義動作となる。
一方、Microsoft WindowsのEnterCriticalSection()関数は、同一スレッドからの複数回呼び出しはブロッキングなしで実行される。ただし非同期シグナル安全性や再入可能性に関する言及や保証はない。