書き方が悪かったのかな… まだ見てるかわからんけど…

複数のスレッドから同時にglutSwapBuffers()を呼んではいけない。
そーゆー仕様だから。
1つのスレッドでglutSwapBuffers()を連続で呼ぶのは良い。
処理が終わるまで帰ってこないから、順に処理されるだけ。

ということです。