Boost.1.52とかでshared_mutexがlock_error例外投げたりしたんだけど

これだった。
https://svn.boost.org/trac/boost/ticket/7720

Windows環境の人は BOOST_THREAD_PROVIDES_GENERIC_SHARED_MUTEX_ON_WIN を定義してねって。
Windows上のなんかの実装だとちょっとバグ出るわーでも汎用的な実装では修正済みだわーだからこのマクロ追加したんだわー1.53からはデフォルトで定義するようにするわー的なこと言ってる

Boost.ThreadのドキュメントのUsing and building the libraryのConfigurationの辺りに詳しいこと書いてた。
http://www.boost.org/doc/libs/1_52_0/doc/html/thread/build.html

[追記]
汎用的な実装の方は遅いそうで、Boost.1.53ではデフォルト指定されませんでした。
https://svn.boost.org/trac/boost/ticket/7906

[追記]
https://svn.boost.org/trac/boost/ticket/7720#comment:15
このパッチを当てて修正すれば、lock_error例外が投げられなくなるので、上記のマクロを定義しないでも大丈夫そう。(ちらっと試した感じでは大丈夫だった。)
trunkにはコミットしてあるらしいので次のboost 1.54とか修正されているでしょうか。