ref: http://d.hatena.ne.jp/ku-ma-me/20080111/p1
shinh さんや kikx さんに指摘されました (kikx さんからはチャットで) が、アサーションで使えますね。「関数 foo が呼ばれるときは mutex がロックされている」という性質を保証したいとき、以下のようにチェックを書くとか。
def foo raise unless mutex.locked? # ... end
菊さんの意見では、「ロックされているかどうか」を返す mutex.locked? より、「このスレッドがロックしているかどうか」を返す Mutex.own? の方がいいとのこと。確かに。1.8 では Mutex に所有者という概念がない (つまり他人がロックした Mutex でもアンロックできる!) のでダメそうですけど、1.9 なら良さそうです。
デバッグとかプロファイリングとかアサーションとかに使えるなら、いらない子ではなさそうですね。ただ、プログラムの本筋で使うべきではないなら、マニュアルあたりで注意を促したほうがいい気もする、かなぁ。
全然関係ないですけど、pthread の初期の Linux 実装である LinuxThread の作者は Xavier Leroy (OCaml の主開発者) なんですね。pthread 関係の Manpage に名前が載っていて驚きました。