class UnlockHook {
pthread_mutex_t& lock;
UnlockHook(pthread_mutex_t& l) : lock(l) {}
~UnlockHook() { pthread_mutex_destroy(&lock); }
};

...
pthread_mutex_lock(l1);
{
UnlockHook hook(l1);
.... // throw されるかも ...
}
これでhookのデストラクタがちゃんと呼ばれるんだろうけど、
いったいどうやってるんだろう?
ひょっとして、throwってすごく遅い?