// main関数のシングルスレッドにおける典型的パターン main() { startup(); while (!done) { getInput(); simulation(); render(); } shutdown(); } // simulation()とrender()を分離 main() { startup(); simulationThread.start(); while (!done) { simulationThread.join(); syncSimulationAndRender(); simulationThread.signal(); render(); waitForVSync(); } shutdown(); } simulationThread() { while (!done) { getInput(); simulation(); wait(); } }