Original Post
Let me start off by saying I am in no way any authority in the industry as I just graduated college and am feeling my way into engine development. I am solely looking to expand my knowledge and possibly help other curious folks. As the hardware industry moves into their newest paradigm of separating cores and adding independent processors so must the software industry adapt to the new technologies. When processors were just getting faster and faster, the easy way to keep games running smoothly was time based programming instead of the frame based ideas that people used to implement. Now the trend is not faster processors but to add more of them, soon I believe we will be witnessing a race of cores between the processor manufacturers. The question is: “How do we design our programs to take advantage of 8, 16, 32, 64, 128+ core processors of the near future?” The answer is: Threading, which allows for parallelism that takes advantage of more cores. I am designing my third game engine from scratch and need to make a critical decision. And the answer is based on the answer to this question: Does running, lets say twenty small threads on one processor core run faster, or better in anyway than evenly distributing the load among five threads on one core? I wrote a tech demo for a dynamically threaded engine to experiment and learn by doing. I know that context switches can be costly and that they happen every time the OS switches threads. Do you (the community) think that it is beneficial to continue perusing a thread manager that spreads the load evenly every so often? Or should I just program everything as a single thread as much as possible in order to skip the overhead of the managing system? If I am missing some important issue or am way off base please tell me. ^^;