Original Post
So I decided to start implementing my own simple physics system. I have a fair knowledge of dynamics in theory and I've already written a small application that simulates planets rotating around a sun (using newtons laws). I'm currently trying to figure out what I need to learn and consider when implementing dynamics, collision detection and -response. I don't care about springs and all those advanced techniques yet, because I won't need them, so I can concentrate on the above 3 points. My greatest concern is whether I should run the simulation in a separate thread or not. The biggest plus would be that the simulation can run independant of the main thread (which should lead to a performance boost on multicore systems, if I do it right). However I think I now understand why it is important that I still update my main thread in the same frequency as the simulation runs. It's not important if the main thread only queries the state of objects in the simulation, but it's important if the main thread modifies the simulation by applying forces / impulses to objects. If update is not called with the same frequency, then forces could be applied two or three times per simulation step (if the main thread runs very fast) or only every two or three simulation steps (if the main thread is very slow). What do you think. Is multithreading worth the additional code to keep both threads in sync or should I aim for just one thread? About what I want to do with the physics system: Simulate space combat using newtons laws (like Point defense system for Homeworld 2). I think there may be about 1000 or 2000 objects out there at once (most of them will be small & fast objects like projectiles and missiles), but this is just a very rough guess.