本日のハマりメモ

同じ過ちを繰り返さないようにメモっておこう。

指定秒数処理を遅らせたい時に安易にsleep使わない

Javaでプログラムしてた時は、あんまりマルチスレッドなプログラムに触れる機会がなかったので、処理を遅らせたい時はsleepをよく使っていたが、組込みシステムだとバックグラウンドで動いているタスクがたくさんある。
sleep*1は「OSに制御を返すんだ」と言うことを肝に銘じておこう。
sleepしている間は他の処理が動く。画像などを指定秒数表示するためにsleepなんか使っても、他のタスクで消されちゃったりすることもある。

戻り値の定義された関数は必ず値を戻す

あたり前だけど。JavaはエラーになるけどCではエラーにならないみたい。
今日のはポインタを返す関数だったので、呼び出し側でメモリ開放とかしていてエライことになっていた。

助かったのは、最近tracのチケットとあわせ、細かくコミットするよう心がけているため、正しく動いたバージョンとの差分をチェックしてあたりをつけられたことだ。単純にトレースしてたらもっと時間がかかっていただろう。


こう書いてみると、まだまだ初心者がするようなミスをしてしまうなぁ。
恥ずかしい...

*1:実際は環境によって違う関数名だったりするけど