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 answers
Related Questions in SLEEP
- Waiting for several hours before resuming execution
- How acurate is a Golang time.Sleep() on a Google Cloud Pod when the amount is subseconds?
- Top level sleep function for Javascript
- Why is the output of an async function printed before that function is called?
- ESP32 C3 not consistently Waking up from Deep Sleep
- Call Sleep("time") in VBA
- How can I make a program run for a given amount of time on the CPU in C++?
- ATTiny814 not going into powerdown sleep
- Vary time between tasks according to wave function
- is there a better option to work with other than time.sleep() in tkinter GUI
- Python printing after a while loop, involving sleep statements
- C++ std::this_thread::sleep_for() sleeping longer than expected for small durations
- Pause thread and re run it
- UDP Streaming in Python: Unexplained Delays Beyond Sleep Time
- why does it say that "sleep(1)" is undefined?
Related Questions in GAME-LOOP
- Is this good practice for calling a random event in a game loop in JS?
- How to juggle between windows (game and pause window) in ncurses?
- Best approach to game loop timer in typescript with no animation
- Synchronizing a Game Loop to a desired number of ticks per second with the WIN32 API
- Game loop implementation using Java Swing and Multithreading concerns
- How to limit game loop fps?
- HTML Canvas context.clip(new Path2D("...path...")) causing memory leak
- how to freeze and unfreeze the game loop?
- Game Loop makes GUI "blinking"
- A-Frame Game Loop Basics: How can I seperate logic from rendering?
- how can I make my delta gameloop stop lagging in Java?
- How would I go about fixing my variable rate SDL timestep?
- game loop delta time is not working with specified fps
- How do I loop the paint event in Windows Forms to create a simple game loop?
- How to avoid busy wait in a single threaded event loop
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?
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)
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.