Katakanlah Anda ingin membatasi framerate Anda menjadi 60fps, itu berarti bahwa setiap frame memiliki waktu render 1 / 60s = 16,67ms (bulat)
Untuk membatasi frame rate Anda, Anda cukup mengecek waktu di awal loop game Anda, kemudian Anda dapat membandingkannya dengan waktu di akhir loop game: jika selisihnya kurang dari 16,67 ms Anda harus mengulur waktu itu.
Salah satu cara untuk melakukan ini adalah dengan menggunakan:
sleep(waittime)
Namun karena sleep(x)
menghasilkan utas untuk minimum x
milidetik Anda tidak tahu pasti apakah Anda akan mendapatkan kontrol kembali dalam waktu.
Cara yang lebih baik adalah menggunakan:
while(timediff < 16.67ms){ sleep(0); }
Ini menghasilkan utas dan meminta kontrol kembali sesegera mungkin.
Solusi lain adalah dengan hanya memiliki loop menunggu sibuk, ini memberi Anda kontrol terbaik tetapi menggunakan CPU tidak perlu.
Ingat bahwa penjadwal OS selalu dapat mengambil kendali dari utas Anda jadi bersiaplah untuk beberapa fluktuasi.