>>70
当たり前だな。
実行単位はC#言語の単位じゃなく、CPUの命令単位だからな。
if(!lock)の後のブロックはアトミックと保証されていない。なのでifパスした直後、
ブロックに入ってlock=trueの前にスレッドの切り替えが起こる可能性がある。

初心者がよくするミスだな。