Why does the game loop need to sleep and how do you determine for how long? How do you keep the sleep time of a thread constant?
1
There are 1 best solutions below
Related Questions in SLEEP
- Delphi and sleep function
- Clear labels, Images in WatchKit after didDeactivate (Glance and InterfaceController)
- Php schedule run a function after 10 minutes
- How to change the delay of sleep/timer thread in android during runtime?
- Compile error on linux (a simple demo code on concept of pipe)
- Timeout handle email php
- Running delayed jobs in loop
- Explain behavior of Unix sleep() function executed on Android
- Sleep Shiny WebApp to let it refresh... Any alternative?
- Will process lost wake-up chance in a preemptive kernel?
- Does sleep/nanosleep work by utilizing a busy wait scheme?
- Python time.sleep on line 2 happens before line 1
- VBS - How to pause a script until a key is pressed?
- How to keep track of time in python without sleeping?
- Sleeping the time difference
Related Questions in GAME-LOOP
- Java: Is there any real performance cost for passing object references between looped methods
- gameloop and deltatime interpolation c++
- Using sleep() in game loop makes delta time unstable
- Why do I keep getting Java.Lang.NullPointerException
- The paddle of pong keeps shaking without staying at one position
- Why does a game loop need to sleep?
- Ways to implement a game logic layer into current 2d game architecture
- Game loop with interpolation - weird step back
- Android gameLoop using SurfaceView; quickly changing camera 'shots' results in black flashes, etc
- how to do a game that is simulated by a loop
- Biggest beef with game loops
- Rails Game Loop in Application Controller?
- How to approach game level switching
- Game Loop - Elements get faster the longer they exist
- Strange behavior of java game loop
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
The operating system will usually be running a lot of threads/processes simultaneously on any given core, and the scheduler has to decide how much processor time each one is going to get. If a thread is running continuously (without sleeping), it can end up dominating available processor resources.
Sometimes that's appropriate, e.g. for extremely computationally intensive applications. However, most programs shouldn't need to do that. With games in particular, the bottleneck is often graphics or IO performance, rather than available CPU resources (i.e. your program could end up wasting processor time while it waits for something else to catch up).
Making your thread sleep for a short period on each iteration frees-up some of the processor time. That lets the scheduler allocate time for other threads/processes, and keeps the system generally running better. Essentially, the sleep time is for the benefit of the rest of the system, rather than your own program.
There isn't really a 'correct' amount of sleep time as such. Generally speaking though, your thread should sleep for as long as possible without impacting your program's performance. A good way to do that is to determine the desired framerate for your game, and from there calculate how much of a delay you can afford between each frame.
Every time round your main loop, check if that amount of time has elapsed since the previous frame. If not, sleep for a short period, and try again next time round the loop.