もしかして、複数スレッドでの並列実行が前提のソースをコンパイルする場合は、
コンパイルオプションに特別なフラグを指定する作法とかがあるのでしょうか?
(whileの例以外にも、まだまだ知らない副作用が潜んでそうで不安です…)

もしあるのなら、教えてくれるとありがたいです。(使用コンパイラー gcc4.5)