C++11標準ライブラリのstd::recursive_mutex, std::recursive_timed_mutexクラスでは、同一スレッドからの再帰ロック獲得回数の上限は未規定(unspecified)となっている。一方で上限回数を超えるtry_lock操作は失敗し、lock操作は例外送出することは保証される。


A thread that owns a recursive_mutex object may acquire additional levels of ownership by calling lock() or try_lock() on that object. It is unspecified how many levels of ownership may be acquired by a single thread. If a thread has already acquired the maximum level of ownership for a recursive_mutex object, additional calls to try_lock() shall fail, and additional calls to lock() shall throw an exception of type system_error. A thread shall call unlock() once for each level of ownership acquired by calls to lock() and try_lock(). Only when all levels of ownership have been released may ownership be acquired by another thread.