たまにですが、他人の書いたプログラムを見たり修正したりする仕事が来ます。そのときに見つけた2例。一応Cで例を見せますが、言語は関係ない話です。
- 例1
-
呼ばれた時の時刻(1970/1/1 0:00:00から経過した秒数)を返す関数time()を使って
void func(void){ if( time() == foo1 ){ (何らかの処理) } else if( time() > foo2 ){ (何らかの処理) } else if( time() < foo3 ){ (何らかの処理) } else if( time() == foo4 ){ (以下似たような繰り返し) } else { (何らかの処理) } }
- 例2
-
func1とfunc2は別スレッドで実行される可能性があります。つまり共有変数ABCを使って、どちらか一方だけに処理をさせたいという意図です。
static int ABC = 0; void func1(void){ if( ABC == 0 ){ ABC = 1; (何らかの処理) ABC = 0; } } void func2(void){ if( ABC == 0 ){ ABC = 1; (何らかの処理) ABC = 0; } }
例1,2を書いたのは別の人です。私は彼らに対して、このコードは危険ではないかと言いました。彼らの答えは「短時間で終わる処理だから、大丈夫だよ」でした。なぜ私が危険に感じたのかは次のページに書きますので、まぁクイズとでも思って。
Comments