>>754
たとえばwindowsなら
class AutoMutex {
    HANDLE h_;
public:
    AutoMutex( HANDLE h ) : h_( h ) {
        WaitForSingleObject( h_, INFINITE );
    }
    ~AutoMutex() {
        ReleaseMutex( h_ );
    }
};
とかって感じのコードを書いておけば、
AutoMutexは使い回しが効くかな。

こんな風に使う。
static HANDLE h = CreateMutex( ... );

void foo() {
AutoMutex lock( h );

// なんか処理

}