lock要求された順番を検証して、
順序にループがあればlock要求時にthrowする仕組みは作れそう

lock/unlockのたびに全threadのlock状況を検証する必要があるからパフォーマンスがお察しになるが