ここでlockという名称は何でもいいんですよね。要するにstructを生成するだけだから。
2か所でlockしたいような場合には使えないという欠点があるね。
void foo() { 
  lock_intterupt lock; // 以下割り込み禁止 
  if (...) { 
     .... 
     return; 
  } 
  lock.unlock();
..... 
  ..... 
  ..... 
  lock.relock(); // ここでも割り込み禁止 
  if (...) { 
     .... 
     return; 
  } 
  ..... 
  return;        // ここでlock(割り込み禁止)した部分が解除される。 
} 
こうするにはどうしたらいい?